Skip to content

kimsappi/matcha-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

Hive webdev project: dating site made in collaboration with @josiz. There is a slightly temperamental version of the app running here. Among other issues with this deployment, the remote database doesn't allow for triggers, meaning the notifications system don't work.

Full-stack JavaScript: Node.JS Express back-end, React front-end. MySQL database (relational DB mandated by the exercise). The product is a (mostly) single-page app that communicates through the back-end through a JSON API with JSON Web Token authentication, Socket.io chat and long-polling notifications.

Instructions

  1. You can skip this step if you don't require full functionality. Edit the files mailConfig.README (provide a valid Gmail SMTP account or similar, as well as Ecole 42 API app details) and apiKey.README (provide a valid Google API key with the Maps API enabled) and move the files to the folders specified in the files, removing the comments therein.
  2. Configure the database connection (api/config.json)
  3. Run run.sh or alternatively:
cd api
npm i # Install server-side dependencies
cd ../client
npm i # Install dependencies for building the front-end
npm run build # Builds the production version of the front-end and moves it to the public folder of the server
cd ../api
npm run start # Runs the server
  1. Browse to http://localhost:3001 with a relatively modern browser with JavaScript enabled.

Features/requirements

Tech

  • Any language
  • 'Micro-frameworks' (no built-in ORM or account manager) allowed (Express)

Visuals/layout

  • Decent layout
  • Header, main section, footer
  • Mobile-friendly

Security

  • User input must be validated
  • Site must be secure
  • No plaintext password storage
  • No XSS
  • No uploading unwanted content
  • No SQL injection

User account features

  • Registration must ask for email, username, last name, first name, password (complex)
  • Registration must be confirmed via an emailed unique link
  • Login with username and password
  • 'Forgot password'
  • Ability to log out with 1 click from any page

Profile features

  • After logging in, user can provide:
    • Gender
    • Sexual preferences (if none provided: bisexual)
    • Biography
    • Interests with hashtags ('#cycling')
    • Max 5 pictures
  • All information above must be modifiable (as well as first and last name and email)
  • User must be able to see who has checked their profile and who 'liked' them
  • Users must have a public 'fame rating'
  • User's location must be established either through GPS/similar or IP
  • Location must be modifiable
  • History of visited profiles

Suggesting matches

  • User must be suggested other relevant profiles
  • Only show profiles the user is interested in (sexual preference)
  • Clever matching (location, tags, fame rating)
  • People must be prioritised based on location
  • List must be sortable by age, location, fame rating, common tags
  • List must be filterable by age, location, fame rating, common tags

Searching for matches

  • Other profiles must be searchable by features like age gap, fame rating gap, location, tags
  • List must be sortable and filterable as above

Profiles of other users

  • Must contain all information except for email and password
  • If you have at least 1 photo, you must be able to like another profile
  • Able to unlike or 'disconnect'
  • See if user is currently online (if offline, date and time of last connection)
  • Ability to report fake account
  • Block user (won't show up in search results, won't generate notifications)
  • See if profile is connected or has liked your profile

Chat and notifications

  • 10 second delay is accepted for all of the following
  • If both users like each other, the users are able to chat to each other
  • Notification reasons:
    • Someone liked your profile
    • Visit to your profile
    • New chat message
    • New 'connection'
    • 'Disconnection'
  • Notifications must be viewable from any page

About

Hive project: dating website. React / Node.js Express / MySQL. With @josiz

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages