asmansou1337 / Matcha

A dating web app made with NodeJs/Express, Ejs Template Engine/Material Design Bootstrap, and MySQL.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Matcha project

Description:

  • Matcha is a dating web app made with NodeJs, Express Js, Ejs Template Engine/ Material Design Bootstrap, and MySQL.

  • This project is part of the 1337 Khouribga Curriculum.

  • Goals: Micro-framework - Advanced User Accounts - real time chat - Geolocalisation - Security / Data Validation

  • Installation

  • To Run The backend server

    cd Project folder and run the script ./startServer.sh

    This will install the project dependencies, lunch setup to create Database, Fill The DB with fake data then run the server.

  • To Run The frontend server

    cd Project folder and run the script ./startClient.sh

    This will install the project dependencies then run the server.

  • Authentication


Project details:

  • Registration

    • at least an email address, a username, a last name, a first name and a password
    • After the registration, an e-mail with an unique link must be sent to the registered user to verify his account

    Alt text

  • Signing-in

    • connect with his/her username and password
    • able to receive an email allowing him/her to re-initialize his/her password in case of forgetting his/her password
    • Disconnect with 1 click from any pages on the site.

    Alt text

  • User profile

    • Once connected user must complete his or her profile: ◦ [X] The gender. ◦ [X] Sexual preferences. ◦ [X] A short biography. ◦ [X] A list of interests with tags (ex: #vegan, #geek, #piercing etc...). These tags must be reusable. ◦ [X] Pictures, max 5, including 1 as profile picture.
    • At any time, the user must be able to modify these information, as well as the last name, first name, email and password.
    • The user should be able to change or reinitialize his password despite been connected or not.
    • The user must be able to check who visited his/her profile as well as who “liked” him/her.
    • The user must have a public “fame rating”: ◦ Up to you to define what “fame rating” means as long as your criteria are consistent
    • The user must be located using GPS positioning, up to his/her neighborhood. If the user does not want to be positioned, you must find a way to locate him/her even without his/her consent.
    • The user must be able to modify his/her position in his/her profile.

    Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text

    • Home Page: Alt text
  • Matching

    • The user must be able to easily get a list of suggestions that match his/her profile

    • The user can see this page only if he/she fill his profile

    • You will only propose “interesting” profiles for example, only men for a heterosexual girls.

      • You must manage bisexuality. If the orientation isn’t specified, the user will be considered bi-sexual by default.
      • You must match profiles based on (in priority):
        • Sexual orientation
        • Close geographic area as the user.
        • With a maximum of common tags.
        • With their “fame rating”.
      • The list must be sortable by age, location, “fame rating” and common tags.
      • The list must be filterable by age, location, “fame rating” and common tags.

      Alt text

  • Search

    [X] The user must be able to run an advanced research selecting one or a few criterias such as:

    • A age gap.
    • A “fame rating” gap.
    • A location.
    • One or multiple interests tags. As per the suggestion list, the resulting list must be sortable and filterable by age, location, “fame rating” and tags.
    • A blocked user should not appear in the search.

    Alt text

  • Profile of other users

    • A user must be able to consult the profile of other users. Profiles must contain all the information available about them, except for the email address and the password.

    • When a user consults a profile, it must appear in his/her visit history.

    • The user must also be able to:

      • Like or Unlike the another user profile if this one has at least one picture.
      • See if the other user has already liked the user and like him back.
      • Check the “fame rating”.
      • See if the user is online, and if not see the date and time of the last connection. When two people “like” each other, we will say that they are “connected” and are now able to chat. If the current user does not have a picture, he/she cannot complete this action.
      • Report the user as a “fake account”.
      • Block the user. A blocked user won’t appear anymore in the research results and won’t generate additional notifications.
    • A user can clearly see if the consulted profile is connected or “like” his/her profile and must be able to “unlike” or be disconnected from that profile.

    Alt text

  • Chat

    • When two users are connected,(Meaning they “like” each other.) they must be able to “chat” in real time.(We’ll tolerate a 10 secondes delay.) How you will implement the chat is totally up to you. The user must be able to see from any page if a new message is received.

    Alt text Alt text Alt text

  • Notifications

    • A user must be notified in real time(We’ll also tolerate a 10 secondes delay.) of the following events:

      • The user received a “like”.
      • The user’s profile has been visited.
      • The user received a message.
      • A “liked” user “liked” back.
      • A connected user “unliked” you.
    • A user must be able to see, from any page that a notification hasn’t been read.

    Alt text

  • Delete Reported Users By an admin

    • A admin can view and delete a reported user

    Alt text

About

A dating web app made with NodeJs/Express, Ejs Template Engine/Material Design Bootstrap, and MySQL.


Languages

Language:JavaScript 64.8%Language:HTML 33.9%Language:CSS 1.2%Language:Shell 0.1%