Skip to content

QuevedoIB/Project-3-Front

Repository files navigation

Timder

Description

Timder is a social web application that groups people based on their personality and preferences over physique.

User Stories

  • 404: As an anon/user I can see a 404 page if I try to reach a page that does not exist so that I know it's my fault
  • Signup: As an anon I can sign up in the platform so I can use all the features.
  • Login: As a user I can login to the platform so I can use all the features.
  • Logout: As a user I can logout from the platform so no one else can use it.
  • Stablish my preferences As a user I can do a personality test so I can stablish my social preferences.
  • List people As a user I want to see a list of people that matches my preferences so I can add them.
  • Accept matches As a user I want to accept matches so I can start talking with them.
  • Decline matches As a user I want to decline matches so I can reject talking with them.
  • Chat As a user I want to talk with the people I matched so I can know them better.
  • Poll to show hide image As a user I want be able to show hide my image with the people I matched so I can decide when others can see me.
  • My profile As a user I want to be able to go my profile and change data so I can modify things.
  • See my contacts profile As a user I want to see my contacts profile so I can know more about them.

Backlog

  • Matches by location
  • Change my password
  • Upload my profile picture
  • See other users profile
  • Redux state
  • Notifications (socket)
  • Voice to chat
  • Premium / Buy features
  • Images in chat
  • Vote user system
  • Google sign up

Client

Routes

Method Path Component Permissions Behavior
get / HomePageComponent public just promotional copy
get /auth/signup SignupFormComponent anon only signup form, link to login, navigate to profile after signup
get /auth/login LoginFormComponent anon only login form, link to signup, navigate to profile after login
post /auth/signup SignupFormComponent anon only signup form, link to login, navigate to profile after signup
post /auth/login LoginFormComponent anon only login form, link to signup, navigate to profile after login
post /auth/logout n/a anon only navigate to homepage after logout, expire session
get /search-people PeopleListComponent user only shows people, match button, next/user, search by personality/location
post /match/:id PeopleListComponent user only matches a user from the list, redirects back to the list page
put /edit-profile/me ChangeProfileForm user only changes user preferences/password
delete /delete/:id na user only delete match
get /profile/me ProfilePageComponent user only my details
get /contacts MatchesListComponent me only my matches, links to match chat
get /chat/user MatchChatComponent me only chat, back to matches link
post /chat/user MatchChatComponent me only posts a message
get ** NotFoundPageComponent public

Components

  • SignUp Form

    • Output: username: unique password: any email: unique image: any quote: any preferences: any personality: any
  • LogIn Form

    • Output: username: unique password: any
  • Home

    • Input: SignUp LogIn
  • Profile

    • Input: Search Matches Edit
  • Edit Form

    • Output: username: unique password: any image: any quote: any preferences: any
  • People -Input: Next User

    • Output: Match
  • User Card

  • Contacts

    • Input: Profile Chat
    • Output: Delete contact
  • Chat

    • Input: Profile
    • Output: Message

-Navbar - Input: Logout My profile

Services

  • Auth Service
    • auth.login(user)
    • auth.signup(user)
    • auth.logout()
    • auth.me()
    • auth.getUser() // synchronous
  • User Service
    • user.list()
    • user.search(terms)
    • user.profile(id)
    • user.match(id)
    • user.removeMatch(id)
  • Chat Service
    • chat.getHistory()
    • chat.getUsers
    • chat.sendMessage()

Server

Models

User model

username - String // required & unique
email - String // required & unique
password - String // required
image - String // 
preferences - Array strings // required
quote - String 
personality - Object

Chat model

history - Array
users - Array

API Endpoints (backend routes)

  • GET /auth/me
    • 404 if no user in session
    • 200 with user object
  • POST /auth/signup
    • 401 if user logged in
    • body:
      • username
      • email
      • password
      • image (not required)
      • quote
      • preferences
    • validation
      • fields not empty (422)
      • user not exists (409)
    • create user with encrypted password
    • store user in session
    • 200 with user object
  • POST /auth/login
    • 401 if user logged in
    • body:
      • username
      • password
    • validation
      • fields not empty (422)
      • user exists (404)
      • passdword matches (404)
    • store user in session
    • 200 with user object
  • POST /auth/logout
    • body: (empty)
    • 204
  • POST /match/invite/
    • body:
      • userId
    • validation
      • id isn't valid (404)
    • add to accept/decline
    • updates user in session
  • DELETE /user/me/contact/:id
    • validation
      • id is valid (404)
      • id exists (404)
    • body: (empty - the user is already stored in the session)
    • remove from contacts
    • updates user in session
  • POST /message
    • body:
      • text
      • date?
    • validation
      • fields not empty
    • create message
    • 200 with chat history object
  • GET /contact/:id
    • 404 if user doesn't exist
    • 200 with user object
  • GET /chat/:id
    • 404 if user doesn't exist
    • 200 with user object

Links

Trello/Kanban

Link to your trello board or picture of your physical board

Git

The url to your repository and to your deployed project

[Client repository Link] https://github.com/QuevedoIB/Project-3-Back [Server repository Link] https://github.com/QuevedoIB/Project-3-Front

Deploy Link

Slides

The url to your presentation slides

Slides Link

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published