This project is about creating a dating website allowing two potential lovers to meet, from the registration to the final encounter
- Front:
- React JS
- Materialize UI
- Context API
- Axios for requests
- Google Maps/Geolocator for user location
- Back:
- Node JS (Express)
- JWT Token
- Socket.io for real-time messges and notifications
- Faker for generate 1000 default users
- Database:
- MySQL
- Register
- email, username(Max 10 characters, lowercase letters and numbers only.), lastname, firstname and pwd (Min 8 characters, at least one number, and one uppercase and lowercase letter)
- Verify if username && email already exists
- Verify if user fills all fields and if inputs are the right format as required
- An e-mail with an unique link to the registered user to verify and active his account before first login.
- Login with username or email and the right pwd.
- An e-mail with an unique link to re-initialize user's password if he request to reset the pwd.
- The Index Page
- suggestions a list of users, based on user's gender, sex preferrence, location(100km default).
- Can select rank susggestions by: fame, ageAsc, ageDesc, distance, and interest tags.
- Can search users. (keywords from username, lastname, firstname, and bio)
- Can filter suggested users by one or multiple customize selections:
- Visit Profile of other users:
- Profiles contain information available about them, except for the email address and the password
- Visitor can like, block visited user, When two users “like” each other, they are considered as “connected” and are now able to chat.
- A blocked user won’t appear anymore in the research results and won’t generate additional notifications.
- Visitor can check if the user is online or offline (will show last login time)
- Visitor also can report this user as fake user.
- The behaviours of visit, like, block and report as fake will all affect user's fame positively or negatively.
- My Profile: User can access and edit his own profile including:
- My Account: access and edit Username, email, firstname, lastname.
- My history: User has a my hisory page to show his visit, like and block history. User can visit profile and unblock user from this page.
- My friends: All connected user will be shown on this page, user can visit profile and send messages from this page.
- Real time notification
- User receives real time notifications when other users check his profile, “liked” him, and block him. User will not be notified if he blocks this user.
- notifications have readed and unreaded seperation. Once the user check the notificaiton, it will be labeled as readed.
- User can also label all the notifications as readed by one click.
- Also a real time message notification if a connected user send him a message.
- The configuration is the following:
- MySQL Database -> Port
3306
- Node JS server -> Port
8000
- React app -> Port
3000
- MySQL Database -> Port
- Create DB:
- You script from shell using command:
sh back/src/config/install.sh
at root directory.
- You script from shell using command:
- Generate more random users:
- there are 1000 default random users when install the db
- if need more users -> url: localhost:8000/generate (1000 users each time)
- start project: cd to the back directory, run
npm start