Overview - ScheduleME-Team/ScheduleME GitHub Wiki
#Description ScheduleME is an application that small businesses can use to create and send schedules to their employees. The user can log in to the application with Google in order to use it. Once the user is logged in, he or she can begin making a schedule for his or her employees. Upon login, a calendar is displayed with the current month up at the top. The user can move to a different month via arrows on the right and left side of the calendar, though moving to a month before the current month is not allowed. When the user clicks on a day, the view zooms into that day and populates a list of employees and a list of times. Initially, the list of employees is empty, but a form at the bottom of the page allows for creating new employees, which automatically appear in the employee box upon submission. The user can the select an employee by clicking on the employee's name. Once an employee is highlighted, the user can click on the times on the right, once for the start time and once for the end time. Doing so creates a rectangle the same color as the employee's name to represent a shift, which spans from start time to end time. Once the user has finished scheduling employees, he or she can save and send the information to the server and to the employees via email.
#Database Schema
We are using a No SQL database to store our data. MongoDB was our final database choice although we also learned a lot about using firebase but decided that there was more documentation on MongoDB. There is a one to many relationship between Users(employer) and Employees and a one to many relationship between Employee and Shifts. All of the collections store an email address as a link to other collections(like a primary key).
#Screenshots and Feature Explanations
The landing page is done mostly with twitter bootstrap3. The CSS is a theme called grayscale. The site is one big page which uses anchors for the menu items. The fixed top menu bar becomes clear when the scroll bar is at the top of the page and becomes black when you scroll down at all.
The login button is a google button provided by passport.js and bootstrap. We had local login modals implemented but decided to go with just the google login because we were doing so much with emails and google calendar.
The landing page is fully responsive and works well even on a mobile device. However the calendar is not responsive at this point (see future work)
The calendar is made with the D3 library. It allows us zooming animations to the calender and makes all of the navigation very streamlined and easy to use. click to zoom in and click again to zoom back out. You can choose dates as far in the future as you want by clicking the over arrow at the right side of the screen. The date picker is a mixture of Bootstrap and jquery and allows you to type in the date or select it from the popup image. You cannot choose a date before the current date a schedule must be made for the current day or for the future. The send button will query the database for shifts between the days you select and send emails to the employees who have shifts during that timeperiod. All employees and shift data is persistant. YOU MUST CLICK SAVE BEFORE YOU CLICK SEND!
You may add employees to the database. New employees show up in your employee box where you may select an employee and then click on a start time and an end time. Delete an employee or a shift. (see known issues) When shift data has been set for a day when you zoom-out to the full screen again, the day will appear in a darkened color. You can click on any of the adjacent days and the focus will change to that day.
These next two shots show our updated theme.
This screen shot is of our our updated theme.
#Future Work/ Known Issues Many new features could be added to the ScheduleME application:
- We would like to implement an interface that allows for sending schedules via text in addition to email
- Create a separate interface for employees to be able to log on and look at their schedules
- Make the Calendar responsive to browser resizing, also for mobile.
- Export data to Google Calendar.
##Known Issues
- If you click an end time before the start time an x shows up on the screen.
- (FIXED)
Shifts are not sent in an email for the last day in your selection and if you only chose 1 day then no shifts are sent at all(FIXED) - Persistent data is permanent, after you click "save" even when you delete it from the app there is no way to take it out of the database at this point.
- Email formatting is crazy and sometimes prints the same shift twice.