Shift swap is designed to fill a need in the ever changing retail and service industries. Those who work in these spheres are plagued with schedules that change from week to week, and often find that their their assigned schedule conflicts with prior commitments and obligations. Shift Swap solves this issue by allowing employees to trade shifts with one another. It allows users to request to trade shifts, drop shifts, and pick up shifts. It handles the handoff between request and response between two employees as well as updating the store schedule.
There are multiple layers of functionality which will build on one another depending on time available to work. These will occur in phases as outlined below.
- Users can be created and/or login
- Workplace can be created/added by users
- Users can create and add their schedule to a store
- Users can view schedule at their store for all employees
- Users can request shift trade and receive trade requests (email/text)
- Shifts can be swapped
- Users can login with Facebook or Google
- Users can modify their schedule
- Users can add schedule of other users
- Stores are validated via Google maps
- Personal calendars are updated by application
- Users can authenticate one another (after several have designated a store)
- Schedule can be added via picture/ocr
- Calendar can be sorted by people working
- Multiple shift types can exist (busser, server, manager) and shift swaps depend on position
- Users can work at multiple locations
Backend: Node.js Frontend: REact/JavaScript
- Complete a Node.js tutorial
- Create database according to scheme
- Implement user athentication
- complete auth tutorial Arpan
- complete node tutorial Kyle, Dylan, Arpan
- set up user auth Arpan
- set up frontend
- research Full Calendar API Kyle
- set up database with MySQL Kyle
- users can make basic requests to each other on backend Arpan
- set up basic home page frontend Dylan
- connect backend to frontend TBD
- implement functionality for user to enter shifts TBD
- implement functionality for user to see shifts for workplace TBD
- users can send requests on frontend TBD
- requests are sent via text message TBD
- users can accept requests updating the database TBD
- add manager admin functionality
- improve UI/UX
- host site on heroku
- make production README
Column Name | Data Type |
---|---|
id | integer |
name | string |
string | |
phone_number | integer |
password_digest | string |
session_token | string |
Column Name | Data Type |
---|---|
id | integer |
name | string |
address | string |
Column Name | Data Type |
---|---|
id | integer |
user_id | integer |
workplace_id | integer |
date | date (ISO 8601) |
start_time | time (ISO 8601) |
end_time | time (ISO 8601) |
|-- server/
| |-- server.js // The entry point for running the backend server locally, and main server for production
| |-- passport/ // Configuration files used to connect to different machines or set settings
| |-- index.js // Overloads the passport object and defines serialize and deserialize
| |-- localStrategy.js // Defines a local strategy
| |-- googleStrategy.js // Defines google OAuth stratgey
| ....
| |-- db/
| |-- index.js // Configures the connection to the database
| |-- models/ // represents data from our database, and defines schemas for each collection
| |-- user.js // Schema for the User collection
| -- src/ // Entry for the React client side application
- In order to set the google authentication up, you must register your app @ https://console.developers.google.com & set
GOOGLE_CLIENT_ID
&GOOGLE_CLIENT_SECRET
as environmental variables - In development mode (i.e.
npm run dev
), OAuth google callback is not being proxied to the google servers. Therefore in order to test the google OAuth on your local machine do the following:
npm run build
npm run prod