Skip to content

R1patil/study-tracker

Repository files navigation

πŸ“š Study Tracker β€” ML, System Design & MLOps

Study Tracker

Next.js FastAPI Supabase TypeScript Python Vercel Render License: MIT


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


✨ Features

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

🐚 Powered by Coral (Hackathon Submission)

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:

  1. Query GitHub Natively: Analyze readme.md, directory structures, and branches via SELECT * FROM github.trees WHERE owner = '...'.
  2. Monitor Student Behavior: Execute queries against student_activity.activity, student_progress.progress, and student_calendar.events to instantly know if you've been distracted by Instagram during your scheduled study blocks.
  3. 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.

πŸ—ΊοΈ Learning Tracks

The curriculum is sourced from 3 of the most popular GitHub repos in the community:

πŸ—οΈ System Design

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)

πŸ€– Machine Learning

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)

βš™οΈ MLOps Zero to Hero

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)

πŸ› οΈ Tech Stack

Frontend

  • Next.js 14 β€” App Router, Server Components
  • TypeScript β€” Type-safe code
  • Tailwind CSS β€” Styling
  • Supabase SSR β€” Auth & session management

Backend

  • 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

Infrastructure

  • Supabase β€” Authentication + Row Level Security
  • Vercel β€” Frontend hosting (free)
  • Render β€” Backend hosting (free)
  • GitHub β€” Source control + CI/CD

πŸš€ Getting Started Locally

Prerequisites

  • Node.js 18+
  • Python 3.11+
  • A Supabase account (free)

1. Clone the repo

git clone https://github.com/R1patil/study-tracker.git
cd study-tracker

2. Setup Backend

cd backend
pip install -r requirements.txt

Create backend/.env:

SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your_anon_key

Run:

uvicorn main:app --reload
# API β†’ http://localhost:8000
# Docs β†’ http://localhost:8000/docs

3. Setup Frontend

cd frontend
npm install

Create 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:8000

Run:

npm run dev
# App β†’ http://localhost:3000

4. Setup Supabase Database

Run 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);

πŸ“ Project Structure

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

πŸ”Œ API Endpoints

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


☁️ Deployment β€” Free Forever

Service Platform Cost
Frontend Vercel βœ… Free
Backend Render βœ… Free
Auth + DB Supabase βœ… Free

Deploy Backend β†’ Render

  1. Connect GitHub repo on render.com
  2. Root Directory: backend
  3. Add env vars: SUPABASE_URL, SUPABASE_ANON_KEY
  4. Click Deploy

Deploy Frontend β†’ Vercel

  1. Import repo on vercel.com
  2. Root Directory: frontend
  3. Add env vars: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, NEXT_PUBLIC_API_URL
  4. Click Deploy

πŸ“– How to Use

  1. Sign up with your email β†’ confirm via the email link
  2. Pick a track from the sidebar β€” System Design, ML, or MLOps
  3. Click the dot next to any topic to cycle status: Not Started β†’ In Progress β†’ Done
  4. Click ⏱ to start a per-topic timer
  5. Click πŸ“ to add personal notes and key takeaways
  6. Hit β–Ά Start Session at the top to log your study time
  7. YouTube Challenges β†’ paste any video URL β†’ watch inline β†’ mark as watched
  8. Study every day to build your πŸ”₯ streak!

🀝 Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.


πŸ“„ License

MIT β€” free to use and modify!


Made with ❀️ by Rahul Patil · Intern @ Raysoft.ai

GitHub YouTube

⭐ Star this repo if it helped you prepare!

About

tracking the study

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors