Inspiration
At the start of ShellHacks, we immediately set out to tackle an issue plaguing modern society. It can be incredibly challenging to focus on the important things with the increasing number of virtual distractions available today. Students with ADHD struggle to finish schoolwork and manage their time effectively, which can lead to serious academic consequences when left unchecked. We created Kronos, named after the Greek God of Time, to help adults and students accomplish their goals by aiding them to see and manipulate their events and tasks in a new way. Kronos provides the tools to better plan your actions by helping to analyze the past and identify required changes to be successful in the future.
What it does
Kronos is a standalone desktop application that displays events and tasks for a full day in a horizontal, scrolling calendar view with additional breakdowns that identify successes and failures in following that calendar. In addition to the start and end times, all events and tasks have fields for the actual start and end times, since things don’t always go as planned. This information is used to change how an event renders on the calendar and is used to calculate breakdowns about the day’s events, successes, and failures. Kronos stores all the events for a day in local JSON and pulls individual day data to render to the calendar one at a time. It also integrates the Google Calendar API to allow users to easily combine their calendars into one place for easy planning.
How we built it
Kronos is written entirely in Python. It uses Tkinter to draw the entire UI, the Google Calendar API to pull events from a user’s web calendar, and the python libraries for JSON, UUIDs, and datetimes to construct, manipulate, and save event data. One day’s worth of events is displayed on the calendar at a time, pulled from local storage, and then saved again when another day is loaded. The calendar view draws all the components every time an update occurs to the calendar. Users can create new events, edit existing events, delete existing events, synchronize with the cloud, and generate breakdowns for the current day through simple button presses.
Challenges we ran into
Drawing the calendar caused a number of architectural and algorithmic challenges, such as providing data access to views (such as the calendar) outside of the main window, displaying the correct sections of events that show in the narrow-and-frequently-changing hour range, and arranging events and buttons to line up with each other mathematically. Our team was interested from the start in utilizing Python as much as possible, but none of us had a wealth of experience in any usage of the language before this event. Initial progress was much slower as we slowly learned some of the intricacies and differences from most other languages Python touts.
Accomplishments that we're proud of
- Algorithmically and mathematically drawing events and sections of events on a variable-range canvas.
- Easy access to Google Calendar for users to effortlessly sync everything together.
- Fully manipulable events that swap between datetime objects and formatted strings when passed from memory to the UI
- Managing data across multiple days through persistent JSON storage
What we learned
- We learned a lot through trial and error about authentication with cloud services
- Designing UIs using Tkinter
- Python syntax, structures, and classes/objects
- Python File IO and JSON libraries
What's next for Kronos
There’s so many more things we’d like to be able to do! Here are a few of our favorites:
- Make better support for dates that stretch between multiple days
- Allow users to drag events to manipulate them rather than editing the text fields directly
- Integrate with other cloud calendars such as Apple calendar
- Provide support for additional statistics and charts/graphs
- Add an additional view for evaluating a week on whole
Built With
- google-calendar
- json
- python
- tkinter

Log in or sign up for Devpost to join the conversation.