Skip to content
Snippets Groups Projects
Commit bbdd90a0 authored by Ferenc Schulcz's avatar Ferenc Schulcz
Browse files

Rework docs

parent 673d08aa
No related branches found
No related tags found
No related merge requests found
...@@ -10,64 +10,10 @@ What's this? ...@@ -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. 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 Entities in the database
------------ ------------------------
**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.
<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. - User (CRUD)
\ No newline at end of file - Match (CRD)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment