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

add readme

parent 83689901
No related branches found
No related tags found
No related merge requests found
SzobaTinder
===========
This is a homework project for the Server-side Javascript course at BME. Written using Node.JS and Express, see the dependencies in `package.json`.
Running: `node index.js`
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 - shows a login screen 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` - 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** middleware - does the login based on username and password. If the credentials are corrects, sets a session. 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/>
- **render** middleware - renders an HTML page.
\ 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