Giter Club home page Giter Club logo

front-vale's Introduction

Vale! 2.0


Description

With Vale! you will never feel lonely or bored again. Inside Vale!, you'll find extraordinary plans created and rated by users like you. From walking your neighbour's dog to driving the route 66 with a newly made friend. Lonely? Bored? Ya Vale!

User Stories

  • ERROR.404 - As a user I want to see a nice 404 page when I go to a page that doesn’t exist so that I know it was my fault
  • ERROR.500 - As a user I want to see a nice error page when the super team screws it up so that I know that is not my fault
  • homepage - As a user I want to be able to access the homepage so that I see what the app is about and login and signup
  • SIGNUP - As a user I want to be able to sign up so that I can access all the features of the app
  • PROFILE.photo - As a user I want to be able to upload an avatar so that the profile page is more personalized
  • LOGOUT - As a user I want to be able to log out from the webpage so that I can make sure no one will access my account
  • PROFILE.read - As a user I want to be able to view my profile details so that I can see everything is correct
  • PROFILE.update - As a user I want to be able to modify my profile details so that I can fix any errors
  • PROFILE.attending - As a user I want to be able to see the plans I'm attending so that I can remind myself
  • PROFILE.attending.cancel - As a user I want to be able to cancel the plans I don't want to attend anymore so that I can let the organizer know
  • PROFILE.created - As a user I want to be able to see the plans I have created so that I can see attendees' information or cancel the plan
  • LOGIN - As a user if i created an account already I want to be able to login to access all the features
  • PLANS.read - As a user i want to view all plans that have been created so that I can find plans that interest me
  • PLANS.detail - As a user I want to view the detail page of the plan that grabbed my attention so that i can know more info about the plan
  • PLANS.join - As a user I want to be able to join the plan that interests me so that I can take part in it
  • PLANS.upcoming - As a user I want to be able to access the upcoming plans page so that I can remind myself
  • PLANS.upcoming.cancel - As a user I want to be able to cancel the plans I don't want to attend anymore so that I can let the organizer know
  • PLANS.create - As a user I want to be able to create a new plan and fill the details so that other user see the plan and can access it
  • PLANS.edit - As a user I want to be able to edit the plans that I have created
  • PLANS.advert - As a user I want to be able to see one advertised plan per day on top of all plans
  • USERS.view - As a user I want to be able to view all USERS inside the app
  • USERS.detail - As a user I want to be able to view the details of another USER
  • MENU - As a user I want to be able to open a menu so that I can access the main features I need

Backlog

List of other features outside of the MVPs scope

Distance from:

  • As a user I want to be able to view all USERS inside the app, organized by distance

Onboarding:

  • Submit photo of your ID so that your profile gets verified

Chats:

  • As a user I want to be able to chat with whomever I want
  • Send request to chat first instead of being allowed to chat straigth away
  • After being accepted into a plan, access a chat room will all the plan attendees

Discounted Plans:

  • Create a section with advertised plans, where companies can advertise their businesses through cool plans (discounts, closed menus, special perks, etc.)

Payment:

  • Create a fake (for now) payment service so that users can pay for the advertised plans

Staff Page:

  • Show the app for staff where they validate the user details with the photo of the ID

Business Page:

  • Create the app for businesses so that they can login to their own special app to be able to:
  • Create an ad
  • Bid for the advertised plan of the day
  • Be notified in case someone paid for an advertised plan
  • Know more about the users that came into the plan

Desktop website:

  • Create a desktop website

Client / Frontend

Routes

Path Component Permissions Behavior
/ HomePage public Home page
/auth/signup AuthSignupPage anon only Signup form, link to login, navigate to homepage after signup
/auth/login AuthLoginPage anon only Login form, link to signup, navigate to homepage after login
/auth/logout n/a anon only Navigate to homepage after logout, expire session
/plans PlansPage anon
/plans/create-plan PlansCreatePage user only Shows the form to create a plan
/plans/:id PlansDetailPage anon
/plans/edit/:id PlansEditPage creator only Shows the form to edit the plans details
/plans/map PlansMapPage anon
/plans/categories PlansCategoryPage anon
/plans/categories/:category PlansPage anon
/user/profile UserProfilePage user only Shows the page where the user can view his details
/user/profile/edit UserProfileEditPage user only Shows the form to edit the users details
/user/onboard UserOnboardPage anon only Shows the form to complete the details of the user
/user/joinedPlans UserJoinedPlansPage user only Shows all the plans the user has joined
/user/createdPlans UserCreatedPlansPage user only Shows all the plans the user has created
/user/chats UserChatsPage user only Shows all the chats the user has. Including individual and groupal chats
/Users UsersPage anon
/Users/:id UsersDetailPage anon

Components

  • Nav

  • LowNav

  • HomePage

  • AuthSignupPage

  • AuthLoginPage

  • PlansPage

  • PlansCreatePage

  • PlansDetailPage

  • PlansEditPage

  • PlansMapPage

  • PlansCategoryPage

  • PlansPage

  • UserProfilePage

  • UserProfileEditPage

  • UserOnboardPage

  • UserJoinedPlansPage

  • UserCreatedPlansPage

  • UserChatsPage

  • UsersPage

  • UsersDetailPage

Services

  • Auth Service

  • auth.login(userInfo)

  • auth.signup(userInfo)

  • auth.logout()

  • auth.me()

  • Plans Service

  • plans.list()

  • plans.detail(idPlan)

  • plans.add(idPlan)

  • plans.delete(idPlan)

  • plans.edit(idPlan)

  • User Service

  • user.me

  • user.detail(idUser)

  • user.delete(idUser)

  • user.edit(id)

  • user.joinPlan(idPlan)

  • user.leavePlan(idPlan)


Server / Backend

Models

User model

{
- email - String, required, unique
- password -  String, required
- name - String, default: ''
- gender - String, enum ['male', 'female', 'others'], default: 'others'
- birthdate - Date, default: null
- interests - [ String, enum ['Culture', 'Drinks', 'Food', 'Party', 'Shopping', 'Sports', 'Travel', 'Volunteering', 'Others'], default: 'others'],
- plansOwned - [ ObjectId, ref: 'Plan' ],
- plansJoined - [ ObjectId, 'Plan' ],
- image - String, default: '/images/default-avatar.png',
- phoneNum - Number, default: null,
- status - String, enum ['pending', 'created', 'deleted'],
- timestamps
}

Plan model

{
title - String, required
description - String,
status - String, enum ['created', 'completed', 'cancelled'],
date -Date,
category - String, enum ['Culture', 'Drinks', 'Food', 'Party', 'Shopping', 'Sports', 'Travel', 'Volunteering', 'Others'], required,
location - { type {type - String,default - 'Point'}, coordinates - []},
timestamps,
}

API Endpoints (backend routes)

HTTP Method URL Request Body Success status Error Status Description
GET /auth/profile Saved session 200 404 Check if user is logged in and return profile page
POST /auth/signup {name, email, password} 201 404 Checks if fields not empty (422) and user not exists (409), then create user with encrypted password, and store user in session
POST /auth/login {username, password} 200 401 Checks if fields not empty (422), if user exists (404), and if password matches (404), then stores user in session
POST /auth/logout (empty) 204 400 Logs out the user
GET /plans 400 Show all plans
GET /plans/:id Show specific plan
GET /plans/create-plan/ 201 400 shows create plan form
POST /plans/create-plan/:id {plan} 201 400 Create and save a new plan
PUT /plans/join-plan/:id {idPlan}, {idUser} 201 400 Create and save a new plan
PUT /plans/leave-plan/:id {idPlan}, {idUser} 201 400 Create and save a new plan
PUT /plans/edit/:id {idPlan}, {idUser} 200 400 edit plan
DELETE /plans/delete/:id {idPlan} 201 400 delete plan
GET /user/profile {idUser} 400 show user profile
PUT /user/profile/edit {idUser} 400 edits the user information
GET /user/joined-plans {idUser} 400 show all plans the user has joined
GET /user/created-plans {idUser} 400 show all plans the user has created
GET /users 400 show all the Users
GET /users/:id {id} show specific user

Links

Trello/Kanban

https://trello.com/b/uEoazJJn/vale-20

Git

The url to your repository and to your deployed project

Client repository Link

Server repository Link

Deployed App Link

Slides

The url to your presentation slides

Slides Link

front-vale's People

Contributors

axelgar avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.