Project Info
Inspiration
As I approach my graduation this May, I realized I needed to brush up on my skills for upcoming tech interviews. Many computer science students face the same struggle when preparing for exams or interviews—staying motivated, setting clear goals, and tracking progress over time. This led to the creation of PrepTracker, a tool designed to help students manage and track their study goals in a personalized, AI-driven way.
What it does
PrepTracker allows students to set daily, weekly, and one-time study goals, track progress via a heatmap dashboard, and receive AI-generated motivational reminders via email. The tool helps students stay on top of their goals, providing a visual representation of their achievements and keeping them engaged throughout their study process. How I built it I built PrepTracker using React/Next.js for the frontend, with TailwindCSS for styling. The backend is powered by Firebase for real-time data storage and user authentication. For personalized reminders, I integrated Meta's Llama 3.2 11B Vision Instruct through OpenRouter to generate AI-driven motivational messages, and Twilio and SendGrid to handle email notifications. The progress visualization is done through a React Calendar Heatmap package, allowing users to view their progress over time.
Challenges we ran into
One of the key challenges I faced was storing and managing student progress over an extended period, from start to end date. Keeping track of dynamic data across multiple goals and dates proved complex. Additionally, date management and operations were a major hurdle, as the project heavily relied on precise date calculations and dynamic updates. I had to ensure that progress was properly tracked across different goal types, which required careful handling of dates, progress mapping, and synchronization across various components of the app.
Accomplishments we're proud of
I'm proud of creating a functional AI-driven system that not only tracks but also actively motivates students to reach their study goals. The heatmap dashboard is a standout feature, giving students a visual representation of their progress. Additionally, I was able to work with dynamic dates and their management successfully.
What we learned
I learned the importance of user-centered design in developing motivational tools. Handling real-time data and building AI-powered reminders that feel personalized was a major takeaway. This was also my first time working with cron-jobs. I had to write a cron-job that ran every dat at 12am and sent users their goals for the day.
What's next
I plan to expand PrepTracker’s functionality by adding support for more complex goal types, improving AI-generated recommendations, and integrating with third-party calendars and task managers to automate goal creation.
PrepTracker
PrepTracker is a fully responsive full-stack AI accountability app that tracks student progress, sends motivational reminders, and provides personalized insights to help CS students stay consistent in their tech interview preparation. I did this project for the Stanford hackathon - Treehacks 2025.
:pancakes: Technology Stack
- TypeScript
- Frontend
- Backend
- Node.js
- Express
- Firebase Storage
- Firebase Auth
- Firebase Functions
- SendGrid
- Twilio
:star: Inspiration
As I approach my graduation on May, 2025, I realized I needed to brush up on my skills for upcoming tech interviews. Many computer science students face the same struggle when preparing for exams or interviews—staying motivated, setting clear goals, and tracking progress over time. This led to the creation of PrepTracker, a tool designed to help students manage and track their study goals in a personalized, AI-driven way.
:hammer_and_pick: What it does
PrepTracker allows students to set daily, weekly, and one-time study goals over a span of the start and end date of the goals, track progress via a heatmap dashboard, and receive AI-generated motivational reminders via email. The tool helps students stay on top of their goals, providing a visual representation of their achievements and keeping them engaged throughout their study process.
:european_castle: Architecture
This project is a monorepo where the frontend and backend code reside in the same repository. The Nextjs frontend communicates with the Nodejs backend. Firebase Storage has been used as
the database and authentications is implemented using Firebase Authentication. The backend is deployed using Firebase functions, which is basically a serverless framework that lets us automatically
run backend code in response to events triggered by HTTPS requests. For personalized reminders, I integrated Meta's Llama 3.2 11B Vision Instruct through OpenRouter to generate AI-driven motivational messages.
A cron-job for sending customized emails reminiding students of their goals for the day is also implemented using Firebase Schedule Functions, Twilio and SendGrid.
The frontend is deployed using Vercel hosting.
Frontend
Backend
:camera: Screenshots
Login Page
Users can login with traditional email & password or with third party authentication such as Google and Github.
Registration Page
Users can register with traditional email & password.
Forgot password page
Users can reset their password in case they have forgotten it.
Today's Goals
Users can view all their daily, weekly and one time goals for today
Tomorrow's Goals
Users can view all their daily, weekly and one time goals for tomorrow
Next 7 Day's Goals
Users can view all their daily, weekly and one time goals for the next 7 days
Progress Page
Users can view a heatmap of their goals for the current year
:construction: Challenges I faced
One of the key challenges I faced was storing and managing student progress over an extended period, from start to end date. Keeping track of dynamic data across multiple goals and dates proved complex. Additionally, date management and operations were a major hurdle, as the project heavily relied on precise date calculations and dynamic updates. I had to ensure that progress was properly tracked across different goal types, which required careful handling of dates, progress mapping, and synchronization across various components of the app.
:rocket: How to launch
Just click on this link!
Analysis
View
Metric
- 9
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- ExpressIn code
- FirebaseIn code
- Next.jsIn code
- OpenAIIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Node.jsClaimed
8 of 9 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
298 KB
Source files
156
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
alaminShaheen/PrepTracker
179 files · 813 KB · @ 8ea1bea
Structure
Interface
42 files · 23%Screens, components and styles rendered to the user.
API & routing
36 files · 20%Request entry points: routes, handlers and controllers.
Application logic
42 files · 23%Domain rules, services and shared utilities.
Data & schema
39 files · 22%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript88%
- XML9%
- Markdown2%
- CSS1%
- YAML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 43- @hookform/resolvers
- @radix-ui/react-alert-dialog
- @radix-ui/react-checkbox
- @radix-ui/react-dialog
- @radix-ui/react-dropdown-menu
- @radix-ui/react-label
- @radix-ui/react-popover
- @radix-ui/react-radio-group
- @radix-ui/react-select
- @radix-ui/react-slot
- @radix-ui/react-tooltip
- @tanstack/react-query
- @tanstack/react-query-devtools
- axios
- class-variance-authority
- clsx
- date-fns
- firebase
- +25 more
functions/backend/package.json
npm · 25- @faker-js/faker
- @sendgrid/mail
- axios
- cors
- date-fns
- dotenv
- express
- express-validator
- firebase
- firebase-admin
- firebase-functions
- module-alias
- openai
- twilio
- uuid
- zod
- +9 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.