diff --git a/README.md b/README.md index 221cb7ec5a75621fe9288f500cd3f23219ec90c1..79cd23d51b3d35129ee40a9ba7733d12a80249fc 100644 --- a/README.md +++ b/README.md @@ -10,64 +10,10 @@ What's this? It's always a big fuss to find roommates in BME dorms. This app could solve this problem by bringing every roommate-seeking individual or group onto one single platform, and let them search for likeable potential roommates - similar to the popular partner-seeking app, Tinder. -Plans & docs ------------- - -**Attention! This project is heavily under development.** - -### Planned endpoints - -These endpoints are subjects to change. There might be a really bad design decision lurking in them, so wear a helmet if you want to read on! - -- `/` - GET - redirects to `/login` when not logged in. If the user is logged in, shows a screen where users can see another user profile - and decide whether they like them or not. - -<br/> - -- `/login` - GET - shows a login form. -- `/login` - POST - takes a username and a password as parameters. If they are correct, creates a session. If they are not, redirects to `/`. -- `/register` - GET - a registration form. -- `/register` - POST - takes a username, a password and a password-again from the registration form. If the username is not taken, and the passwords match, creates the user and creates a session. Otherwise it redirets to `/register`. -- `/logout` - GET - destroys the session and redirects to `/`. -- Note: we're not dealing with forgotten passwords. I'm not going to set up an SMTP server for that, and "security questions" are even more terrible. - -<br/> - -- `/browse` - GET - shows the profile of another user, with an option to like or dislike. -- `/browse/like` - POST - expresses a like. Supplies the username of the liked profile in a parameter. If there was a match, redirects to `/browse/match`, else to `/browse`. -- `/browse/match` - GET - notifies a user about a new match. -- `/browse/dislike` - POST - expresses a dislike. Supplies the username of the disliked profile in a parameter. Redirects to `/browse`. - -<br/> - -- `/matches` - GET - shows a list of the matches for the user. -- `/user/:username` - GET - shows the profile of the user supplied as URL parameter. - -<br/> - -- `/profile` - GET - shows a form to edit user profile. -- `/profile` - POST - saves a profile. - -### Necessary middlewares - -- **static** middleware - because I want CSS, that's why. - -<br/> - -- **auth** middleware - should be placed on all non-public endpoints. If the user has a valid session, sets the username on `res.locals.username`. Else, redirects to `/login`. -- **login** middleware - does the login based on username and password. If the credentials are corrects, sets a session and redirects to `/`. If not, redirects to `/login`. -- **registration** middleware - same but for registration. -- **logout** middleware - destroys the session and redirects to `/`. - -<br/> - -- **profile load** middleware - loads a profile and places its data on `res.locals.profile`. It takes the username to load the profile for from `res.locals.userToLoad`. -- **browse** middleware - selects a username that the current user has no relation with yet, and places it on `res.locals.userToLoad`. -- **select** middleware - selects a username from a request parameter and places it on `res.locals.userToLoad`. -- **like** middleware - creates a positive relation with the current user and the one on `res.locals.profile`. If it's a match, redirects to `/browse/match`, else to `/browse`. -- **dislike** middleware - creates a negative relation with the current user and the one on `res.locals.profile`. Redirects to the _referer_ page. -- **matches list** middleware - loads usernames for the matches of the current user, and places them on `res.locals.matches`. -- **profile edit** middleware - reads profile data from the requests and saves it for the current user. +Entities in the database +------------------------ -<br/> +Note: it was a homework requirement to have at least 2 entity types, one of which implements the full CRUD functionality. My entity tÃpes are: -- **render** middleware - renders an HTML page. \ No newline at end of file +- User (CRUD) +- Match (CRD) \ No newline at end of file