Handsome Scheduler
This project uses Rails, React, Handsontable, and Google's Calendar API to bulk add calendar events as opposed to simply one at a time.
The end goal of this application is to provide a baseline of event transfer to a Google Calendar (title, start date, end date) and have the rest post to a handsontable spreadsheet so that it can be quickly bulk edited/updated as needed. Users can have as many additional custom columns as they want to keep track of whatever data they might need.
This is a passion project of mine, arising out of the need for something like this in my previous position at American Councils. Coordinating hundreds of events in a year is challenging by itself. Excel is something that all professionals are familiar with, and having a tool to manage these events in a simple, yet familiar way is something that is desperately needed. It makes for easy transfer of existing data stored in spreadsheets as well, since all a user needs to do is format it locally in Excel and copy/paste in to the handsontable spreadsheet.
Technologies Used
- Ruby
- Ruby on Rails
- React
- Webpacker
- Google OAuth
- Handsontable
- PostgreSQL
- Bulma
Additional Features
- Reoccurring events (select the appropriate dates, i.e. Su/M/T/W/Th/F/S)
- Undo all calendar additions of a specific post event (by using/storing some sort of post identifier when submitting events via the handsontable spreadsheet)
- Create new Google Calendars
- Allow for custom vestigial columns (for the user's purpose only, so that they can store data relevant to to the event but not necessarily relevant to a google calendar event)
- Toggle-able columns (all day events would remove start/end times, toggle description, etc.)
- Edit calendar events (using a handsontable spreadsheet) -- this would need to issue a get request to the google calendar api, compare the events to existing events to see if there is a change, and then if there is, send a put to update that event
- Tooltips and help documentation to make using the website easier
- Beautify landing page, decide on a color scheme (if any)
- Color code events
- Introduce D3.js to view usage and post history
Additional Infrastructure
- Model Event
- associate to a handsontable post event (belongs_to :events_post_group)
- associate to as many custom columns as exists (has_and_belongs_to_many :custom_columns)
- Model EventsPostGroup
- associate to many events (has_many :events)
- Model CustomColumn
- associate to many events (has_and_belongs_to_many :events)
Optomizations
- Dry out Signet code