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.