Inspiration

We kicked off the hackathon by searching through the challenges, brainstorming for ideas, and trying to find the perfect problem to solve. Little did we know that while searching everywhere else for a problem, one was sitting in our very lap. As we debated different project ideas, a common theme emerged: we were all struggling with time management—juggling study, sleep, and everything else. That’s when our teammate, Priyansh, had a lightbulb moment. We weren’t just talking about a problem; we were living it. And with that, ProcrastiNot was born—a tool designed to help manage time and reduce stress, just like we needed.

What it does

The chrome extension uses your Canvas dashboard to create a work schedule for you, and imports the schedule into the user's Google Calendar.

How we built it

Front End

The Chrome extension uses OAuth to verify a user's identity, using Google sign-on. The verification retrieves an access token which is stored to be used for later API called to our backend. On the Canvas dashboard, the user initiates the scanning process. After scraping through the user's canvas assignments page, we feed a list of the user's courses, assignments, due dates, and supplementary information to the backend. The backend returns an optimal study plan including blocked-out sessions for each assignment while keeping due dates and extraneous circumstances in mind. To keep with the theme of GirlHacks 2024, the extension has an additional disco theme option. The design and layout aspects are made through frontend technology such as HTML, CSS, and JavaScript.

Back End

The backend is broken up into various FastAPI endpoints with a payload schema designed to be fed into an LLM. Once data regarding courses and due dates are fed into the Gemini LLM, the service manager extracts structured output and redirects it to the Google Calendar API. Once the GCal API returns true, a response is sent to the frontend noting the email to which the events were saved to. The backend is hosted on an ASGI Uvicorn server to handle multiple asynchronous requests to the server.

Challenges we ran into

Chrome extensions are incredibly tricky, due to their increased abstraction and ability with the Chrome browser. Additionally, front-end design was also a blocker due to the intricate CSS involved. We also ran intro problems with the front-end scraping portion. When first attempting to scrape the course content information we ran into the security measures that NJIT had in place for unauthorized access to Canvas. So by including an authentication component, we were able to allow the backend to read the Canvas data. Another challenge we ran into was on the backend regarding data. When communicating with the LLM we struggled with getting structured data that we could use. By utilizing the chat completions feature in the Gemini API along with improved JSON formatting we were able to resolve this issue.

Accomplishments that we're proud of

One of our biggest accomplishments during this hackathon was building a fully functional prototype within such a short timeframe. We quickly adapted to technologies like the Gemini API and the Magnum framework, which were new to us, and integrated them into our solution. We're especially proud of how we turned a simple concept into a tool that addresses a problem we personally face—time management. Our ability to collaborate, delegate tasks, and overcome the steep learning curve made this achievement all the more rewarding.

What we learned

A few organizational skills that we learned is to set a deadline for when to start coding. We realized we needed to do this when counting how many actual productive hours we had to work. So we set a limit of 1 pm by which we had to have a finalized idea from which we could build off of. We also learned how to learn fast. Many of the technologies that we utilized were tools that we had heard of but weren't familiar with. So, we had to be resourceful and search for different ways to problem solve.

What's next for ProcrastiNot

We envision ProcrastiNot evolving into a comprehensive time-management tool that could help not only students but professionals as well. Our next steps include incorporating the length of time or work that an assignment will take, to better map out a plan on the calendar. We plan to use user inputs, MongoDB, and a more powerful version of the LLM to better handle our next features. We hope to continue building on this idea and release it as a fully-fledged productivity tool to help people manage their time more effectively.

Built With

Share this project:

Updates