A full-stack study tracker to systematically prepare for ML & System Design interviews. Built by @R1patil Β· Intern @ Raysoft.ai
π Live Demo Β |Β πΊ YouTube Channel Β |Β β Star this repo if you find it useful!
π Proudly built for the Coral Hackathon
| Feature | Description |
|---|---|
| π Auth | Email + Password signup/login via Supabase |
| π§ Jarvis AI Mentor | An empathetic, high-EQ AI agent that monitors your progress, calendar, and screen time using Coral SQL, guiding you with first-principles and yogic wisdom. |
| π΅οΈ Desktop Activity Tracker | A local Windows daemon that tracks your active windows and detects 5-minute "distraction spikes", pushing real-time interventions. |
| π€ Per-user data | Every user has their own private progress in Supabase PostgreSQL |
| β Topic tracking | Mark topics as Not Started / In Progress / Done |
| π Notes | Add personal notes and key takeaways per topic |
| β±οΈ Study Timer | Per-topic and global session timer |
| π₯ Streaks | Daily study streak tracking |
| π Dashboard | Live progress % across all tracks |
| πΊ YouTube Challenges | Add, embed, and track your own YouTube videos |
| π Direct links | Every topic links directly to its resource |
This project was built to showcase the incredible power of the Coral SQL engine for AI Agent tool-calling.
Instead of writing dozens of complex API wrappers to fetch GitHub repository data or internal PostgreSQL metrics, Jarvis (our LLaMA-3.3 70B AI Agent) is equipped with a single tool: execute_coral_sql.
By leveraging Coral, the AI can:
- Query GitHub Natively: Analyze
readme.md, directory structures, and branches viaSELECT * FROM github.trees WHERE owner = '...'. - Monitor Student Behavior: Execute queries against
student_activity.activity,student_progress.progress, andstudent_calendar.eventsto instantly know if you've been distracted by Instagram during your scheduled study blocks. - Zero Boilerplate: Coral eliminates the need for massive data extraction layers. The AI simply writes ANSI SQL, and Coral delivers the structured JSON results instantly.
The curriculum is sourced from 3 of the most popular GitHub repos in the community:
Source: awesome-system-design-resources
- Core Concepts (Scalability, CAP Theorem, Consistent Hashing...)
- Networking Fundamentals (OSI, DNS, Load Balancing...)
- API Fundamentals (REST, GraphQL, WebSockets...)
- Database Fundamentals (ACID, Sharding, Indexing...)
- Caching (Strategies, CDN, Eviction Policies...)
- Distributed Systems & Microservices
- Interview Problems (Easy β Medium β Hard)
Source: machine-learning-interview
- ML Fundamentals (Linear Regression, SVM, XGBoost...)
- Deep Learning (CNNs, Transformers, Backpropagation...)
- ML System Design (Recommendation Systems, Fraud Detection...)
- ML Coding Questions (Implement from scratch)
Source: mlops-zero-to-hero
- Containerization (Docker, Dockerfile, Docker Compose)
- Orchestration (Kubernetes, Helm, Kubeflow)
- CI/CD for ML (GitHub Actions, Jenkins)
- Experiment Tracking (MLflow, DVC, W&B)
- Model Serving & Monitoring (FastAPI, BentoML, Evidently)
- Next.js 14 β App Router, Server Components
- TypeScript β Type-safe code
- Tailwind CSS β Styling
- Supabase SSR β Auth & session management
- FastAPI β REST API
- Coral CLI β SQL Engine for GitHub & PostgreSQL integrations
- Groq API β Ultra-fast LLaMA-3.3-70B inference for Jarvis AI
- Python 3.11 β Core language
- httpx β Async HTTP for Supabase queries and JWT verification
- Supabase β Authentication + Row Level Security
- Vercel β Frontend hosting (free)
- Render β Backend hosting (free)
- GitHub β Source control + CI/CD
- Node.js 18+
- Python 3.11+
- A Supabase account (free)
git clone https://github.com/R1patil/study-tracker.git
cd study-trackercd backend
pip install -r requirements.txtCreate backend/.env:
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your_anon_keyRun:
uvicorn main:app --reload
# API β http://localhost:8000
# Docs β http://localhost:8000/docscd frontend
npm installCreate frontend/.env.local:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key
NEXT_PUBLIC_API_URL=http://localhost:8000Run:
npm run dev
# App β http://localhost:3000Run this in your Supabase SQL Editor:
create extension if not exists "uuid-ossp";
create table user_progress (
id uuid default uuid_generate_v4() primary key,
user_id uuid references auth.users(id) on delete cascade not null,
topic_id text not null,
status text default 'not_started',
notes text default '',
updated_at timestamptz default now(),
unique(user_id, topic_id)
);
create table study_sessions (
id uuid default uuid_generate_v4() primary key,
user_id uuid references auth.users(id) on delete cascade not null,
topic_id text,
topic_title text,
duration_mins float default 0,
date date default current_date,
created_at timestamptz default now()
);
alter table user_progress enable row level security;
alter table study_sessions enable row level security;
create policy "Users own their progress" on user_progress
for all using (auth.uid() = user_id);
create policy "Users own their sessions" on study_sessions
for all using (auth.uid() = user_id);study-tracker/
βββ backend/
β βββ main.py β FastAPI app + JWT auth + all routes
β βββ requirements.txt
β βββ Dockerfile
β βββ .env β (not committed)
β
βββ frontend/
βββ src/
β βββ app/
β β βββ page.tsx β Redirects to /login
β β βββ login/page.tsx β Login page
β β βββ signup/page.tsx β Signup page
β β βββ dashboard/page.tsx β Main dashboard
β β βββ youtube/page.tsx β YouTube challenges
β β βββ auth/callback/ β OAuth callback handler
β βββ components/
β β βββ Sidebar.tsx
β β βββ StatsHeader.tsx
β β βββ TimerWidget.tsx
β β βββ TrackView.tsx
β β βββ TopicCard.tsx
β β βββ auth/UserMenu.tsx
β βββ lib/
β βββ api.ts β API calls with JWT
β βββ supabase/ β Supabase client/server
βββ .env.local β (not committed)
βββ package.json
| Method | Endpoint | Description |
|---|---|---|
GET |
/ |
Health check |
GET |
/progress |
Get full user progress |
GET |
/stats |
Get stats + streaks |
PATCH |
/topic/{id}/status |
Update topic status |
PATCH |
/topic/{id}/notes |
Update topic notes |
GET |
/timer |
Get active timer |
POST |
/timer |
Start / stop timer |
All endpoints require
Authorization: Bearer <supabase_jwt>header
| Service | Platform | Cost |
|---|---|---|
| Frontend | Vercel | β Free |
| Backend | Render | β Free |
| Auth + DB | Supabase | β Free |
- Connect GitHub repo on render.com
- Root Directory:
backend - Add env vars:
SUPABASE_URL,SUPABASE_ANON_KEY - Click Deploy
- Import repo on vercel.com
- Root Directory:
frontend - Add env vars:
NEXT_PUBLIC_SUPABASE_URL,NEXT_PUBLIC_SUPABASE_ANON_KEY,NEXT_PUBLIC_API_URL - Click Deploy
- Sign up with your email β confirm via the email link
- Pick a track from the sidebar β System Design, ML, or MLOps
- Click the dot next to any topic to cycle status:
Not Started β In Progress β Done - Click β± to start a per-topic timer
- Click π to add personal notes and key takeaways
- Hit βΆ Start Session at the top to log your study time
- YouTube Challenges β paste any video URL β watch inline β mark as watched
- Study every day to build your π₯ streak!
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
MIT β free to use and modify!