Skip to content

lpan42/Matcha

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2nd web project in 42.

This project is about creating a dating website allowing two potential lovers to meet, from the registration to the final encounter

Stacks:

  • 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

Main Features:

  • 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 Register
  • 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. login
  • An e-mail with an unique link to re-initialize user's password if he request to reset the pwd. ResetPwd
  • 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:
      • age range (10-100)
      • Max distance (5-500km)
      • Fame (0-1000+)
      • Gender (if not selected, will be based on user profile)
      • Sex Preference (if not selected, will be based on user profile)
      • interest tags index
  • 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. visit Profile chatroom
  • My Profile: User can access and edit his own profile including:
    • Avatar
    • Gender
    • Sexual preferences
    • Biography
    • Choose from a list of interests
    • Upload max 4 pictures (excluding avatar), The profile pictures will be shown as a slideshow. profile
  • My Account: access and edit Username, email, firstname, lastname. Account EditAccount
  • 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 history
  • My friends: All connected user will be shown on this page, user can visit profile and send messages from this page. my friends
  • 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. notification
  • Also a real time message notification if a connected user send him a message. newMessage

Run project

  • The configuration is the following:
    • MySQL Database -> Port 3306
    • Node JS server -> Port 8000
    • React app -> Port 3000
  • Create DB:
    • You script from shell using command: sh back/src/config/install.sh at root directory.
  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages