ad-lib's People
Forkers
isabella232ad-lib's Issues
Modularize parsing of data and convert JSON to POJO
The current code parses the POST request body all within the AddParticipantServlet doPost method. This issue would help in modularization of this processing and convert the JSON object into a POJO
Require all fields to be completed for form submission
Currently, the user is able to submit a form while leaving certain fields empty. Since all fields are needed to correctly identify a match, we should try to require all fields to be completed for form submission to be successful
Add User functionality
If a user opts to save preferences, add user to datastore with saved preferences
Add interests to validation in checkPersonalPreferenceFields()
Send error if user submits form twice before match is found and returned
Find or write JUnit rule to encapsulate setUp() and tearDown() in Datastore tests
Use public factory methods to create participants
Comment on PR by Kevin:
"A potential cleanup for a future PR could be to make this constructor private and instead use public factory methods to create participants. Some of the code that calls this now has to specify fields that don't make sense for their particular case. For example, creating a new unmatched participant requires the caller to explicitly include the MatchStatus and a zeroed out match ID. Not only does this lead to more LOC, but it also leaks a small detail that 0 is this class' default value for matchId.
A factory method might look like
return new Participant(username, startTimeAvailable, endTimeAvailable, /* matchId= */ 0, MatchStatus.UNMATCHED, timestamp)
}```
which requires two fewer arguments because an unmatched participant will always have the unmatched enum value and zeroed match ID."
Create a dummy email for ad lib itself to send emails.
Test servlets
Get interest array json format
Use local storage to save state of web application on page refresh
Change alert on successful POST to redirection from form to loading page view
Currently, the frontend and backend are not communicating match status, but once this communication is established, instead of using alert to communicate to the user, a page redirection should be used instead.
AddParticipantServlet should validate request parameters before doing any processing
AddParticipantServlet#doPost parses parameters from the request while it's processing. This could lead to wasted work if one of the request parameters is invalid. Unless all parameters are valid, the servlet should return early and return an error code to the frontned.
When to remove Users from datastore?
Once a user opts to save preferences, a User entity that can be updated is added to datastore. However, we never give the user an option to delete their preferences from the datastore even though they have the option to not save their current preferences.
Notify both participants (via UI) of their match status
Currently, only one participant in a match receives a "Matched" status, so this issue needs to be fixed
Remove expired Participants from datastore with cron job
Limit number of interests to 3
Add shared interests to Match
Change num matching fields threshold when interests are added
Add frontend unit tests for all form components
The frontend components are currently not tested and adding snapshot tests would help ensure that the UI does not change unexpectedly.
Add "Oops, something went wrong" page view
Personalize Match and NoMatch page views
Match: display meeting details
NoMatch: Display expired participant details
Modify backend servlets to not include getUsername functionality and rather instantiate a UsernameService
Add unit tests for doPost() in AddParticipantServlet
Currently, the doPost method is not unit tested, however to ensure correct functionality and improve backend scalability/processes, unit tests should be added
Calendar API requires DateTime rather than DateTimeZone
Our current implementation uses the java DateTimeZone however the calendar API requires the DateTime class , so in order to connect the matching algorithm to the notification and event calendar we would need to switch the two
Add backend support for user supplying an empty personal preference fields
Add continuous integration github workflow for ./frontend code
doGet in SearchMatchServlet is only called when on the page.
Resolve issue where only one participant is notified about match via search-match servlet
Replace body to send real link to user instead of generic.
Modify Ad-lib pages content to adjust descriptions relating to Calendar/Meet notificaitons
Run migration to update existing entries to match latest schema
Add role/PA/interests fields to User
Right now, a User only includes a user's username if they choose to save their preferences. The User object should include fields for a user's role, PA, and interests.
Change JS linter to run yarn commands instead of npm commands
Form submission confirmation email
Add preferred name to form (for emails)
Remove participants from unmatched participants once endTimeAvailable passes
Figure out when to null out participant's availability once their endTimeAvailable - (duration + PADDING) time passes.
Current ideas:
- Every 1 min, send out a request for each participant to see if the participant should be removed as a participant who's currently searching for a match (1 min is fine because of the 15 min padding)
- Continuously have the entire participant datastore searched
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.