Architecture - SCCapstone/WorkAnyPlace GitHub Wiki

1. SPA or Traditional?

SPA:

  • Frontend - Angular
  • Backend - Firebase

2. URLs

Sign Up www.workanyplace.com/signup Home page where user while sign up for a work any place account

Login www.workanyplace.com/login/user login page where user will apply password and username to log into account

Conversation Page www.workanyplace/convo User will be able to see conversations with other users on this page.

Messages www.workanyplace.com/user/convo/messages Once logged in user will have conversations to select from and message here.

Stat www.workanyplace.com/user/stat User can see stats and efficiency of their profile.

Account Settings www.workanyplace.com/user/settings User can monitor settings of their account on this page.

Rate User www.workanyplace.com/user/rateuser Here the user will be able to rate people that have completed jobs for them.

View Profile www.workanyplace.com/user/profile User will be able to view the profile of their fellow workers here.

Create Jobs www.workanyplace.com/user/jobs/createjobs User can create jobs to be completed by other users on this page.

MyJobs www.workanyplace.com/user/jobs/myjobs Users can see jobs that they have accepted and will work/ have worked already.

3. REST API

REST API is not being implemented in our web app.

4. Views

Toolbar

At the bottom of every page that will allow the user to jump to one of four main pages.

MessagesOverview

A list of all the conversations.

MessagesHeader

The header at the top of the Messages page, has a button to start new conversations.

ConversationContent

The messages between a job poster and a job worker. Each message has a timestamp and is next to the profile picture of the user who said it.

ConversationHeader

The header at the top of a conversation, says the name of who the conversation is with and has a back button that takes the user back to the Messages page.

MessageBox

The place where users type information/messages. Used both on the the Conversation page and all of the app when inputting information.

SearchBar

This is not necessarily what our search bar will look like but there will be multiple search bars across the app to search through posted jobs, accepted jobs, or conversations.

JobContentList

JobPostingContentList

A list of all the posted jobs, the same view would be on the Jobs page and My Jobs page.

ScrollBar

The scroll bar is on the right side of any page that has a list too big to fill in the screen.

5. Database Schema

Users

-name: string
-dob: number
-username: string
-password: string
-email: string
-jobsCompleted: number
-hoursWorked: number
-createdJobs: number
-moneyMade: number
-group: number
-starRating: number

The Users table will hold any information about the user such as their username, password, star rating, etc.

Description of attributes:

  • name - name of the user
  • dob - date of birth of the user
  • username - created name by user
  • password - password created by the user to sign into their account
  • jobsCompleted - This will be the number of jobs they have completed
  • hoursWorked - number of hours the user has worked
  • createdJobs - number of jobs the user has created that other users have completed
  • moneyMade - amount of money user has made
  • group - group selected by user to help find jobs they will like
  • starRating - holds average star rating based on reviews from other users

Posted Jobs

-title: string
-pay: number
-group: string
-description: string
-address: string
-postOwner: string

The posted jobs table will hold information related to a job that has been posted. Once a user accepts a posted job, the data from the posted job will be added to the Accepted Jobs table and then deleted from the posted jobs. This table will be used to populate the Job Posts page.

Description of attributes:

  • title - title of job chosen by post owner.
  • pay - pay is also chosen by the post owner. This is the amount a user can make from a job if they decide to complete it for the post owner.
  • group - a group is something all users have that helps them find jobs they will be interested in. The post owner will chose a group which will make the post show up first on the Job Posts page of users that have that group.
  • description - basic description of what the job involves.
  • address - address of job. Used to populate Job posts page by showing jobs that are close to the users current location.
  • postOwner - username of person who posts the job.

Accepted Jobs

-postOwner: string
-worker: string
-title: string
-pay: number
-group: string
-description: string
-address: string

This table will hold information about ongoing accepted jobs. Once a job is accepted by a user, it will be stored in this table. This table will give data to the my jobs page. After a job is completed, it will be deleted from this table.

Description of attributes:

  • postOwner - user who posted the job
  • worker - user who accepted the job
  • title - job title created by postOwner
  • pay - amount of money postOwner will pay to worker
  • group - chosen by postOwner to help find people who are skilled at the job they are posting
  • description - information provided by the postOwner about the job
  • address - address of the job location

Conversation

  • jobSeeker: string
  • jobPoster: string
  • date: number
  • day: string
  • time: number
  • body: string

The conversation table will hold the conversation between the jobSeeker and the jobPoster. Once the conversation has been started between two people it will be added to the messages table.

Description of attributes:

  • jobSeeker - the person interested in the job posted
  • jobPoster - the person who posted the job
  • date - the date that the message was read
  • day - the day that the message was read
  • time - the time that the message was read
  • body - the part where the sender can write the message

Messages

  • name: string
  • date: number
  • day: string
  • time: number
  • search: string
  • preview: string

The Message table will hold all the messages that the user have with other people on the app. The older messages will have a date of the last message sent/received. The recent messages will have the day and the time of the last message sent/received. It will also preview part of the last message from the conversation table.

Description of attributes:

  • name - the name of the person who the message is being sent to
  • date - the date of the last time the message was received/sent
  • day - the day of the last time the message was received/sent
  • time - the time of the last time the message was received/sent
  • search - the search bar at the top allows one to search a person's name
  • preview - the purview of the conversation

6. Queries

The Database Queries we expect to need are User, Posted Jobs, Accepted Jobs, Conversation, and Messages. These will be used mostly with SQL inner joins within the User and every other Queries. The Posted and Accepted Jobs. The conversation and message queries will also have SQL inner joins.