Built by Team FutureMind-Coder · 6th Semester
A competitive programming progress tracker with a real database, five-platform sync, activity heatmap, streak tracking, problem journal, and a Chrome extension with a built-in Pomodoro timer.
FutureMind-Coder/
├── app/ # Next.js 15 App Router (web)
│ ├── (auth)/ # Login, signup pages
│ ├── (app)/ # Authed pages (all behind middleware)
│ │ ├── dashboard/ # Overview with stats + heatmap preview
│ │ ├── activity/ # Full 52-week contribution heatmap
│ │ ├── goals/ # Daily/weekly targets with live progress
│ │ ├── journal/ # Markdown problem notes
│ │ ├── platforms/ # Connect + sync LeetCode/CF/GH/CC/AtCoder
│ │ └── settings/ # Profile, password
│ ├── api/extension/timer/ # REST endpoint used by Chrome extension
│ └── page.tsx # Landing page
├── components/ # UI primitives + feature components
├── lib/
│ ├── supabase/ # Client, server, middleware, types
│ ├── platforms/ # Platform API fetchers (one file each)
│ ├── streak.ts # Streak + heatmap logic
│ └── utils.ts
├── supabase/
│ └── schema.sql # Run once in Supabase SQL editor
├── extension/ # Chrome Extension (Manifest V3)
│ ├── manifest.json
│ ├── background.js # Service worker — tab tracking + Pomodoro
│ ├── popup.html / popup.js # Extension popup
│ └── setup.md
├── .env.example
└── README.md
| Layer | What |
|---|---|
| Framework | Next.js 15 (App Router, Server Actions, TypeScript) |
| Styling | Tailwind CSS 4 (CSS-first config, custom OKLCH palette) |
| UI | Shadcn-style components, Geist Sans + Instrument Serif |
| Auth + DB | Supabase (email/password, Postgres, Row Level Security) |
| Charts | Recharts |
| Extension | Chrome Manifest V3, vanilla JS |
| Platforms | LeetCode GraphQL, Codeforces API, GitHub GraphQL, CodeChef unofficial, AtCoder/kenkoooo |
- Create a project at supabase.com.
- Open SQL Editor and run
supabase/schema.sqlin full. - Copy your project URL and anon key.
cp .env.example .env.local
# Fill in NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY
# Optionally: GITHUB_TOKEN for full GitHub stats (otherwise public repos count is used)npm install
npm run dev # → http://localhost:3000chrome://extensions→ toggle Developer mode on- Load unpacked → select the
extension/folder - See
extension/setup.mdfor API URL + auth token wiring
| Feature | Status |
|---|---|
| Email auth (Supabase) | ✅ |
| Dashboard (stats, charts, heatmap preview) | ✅ |
| 52-week activity heatmap | ✅ |
| Streaks (current + longest) | ✅ |
| Goals (daily problems, weekly problems, weekly minutes) | ✅ |
| Problem journal with Markdown editor | ✅ |
| LeetCode stats sync | ✅ |
| Codeforces stats sync | ✅ |
| GitHub stats sync | ✅ |
| CodeChef stats sync | ✅ |
| AtCoder stats sync | ✅ |
| Chrome extension — tab time tracking | ✅ |
| Chrome extension — Pomodoro timer | ✅ |
| Chrome extension — syncs seconds to Supabase | ✅ |
| Light + dark mode | ✅ |
| Landing page | ✅ |
| Profile + password settings | ✅ |
These are not built yet — pick up from here on another machine:
- Extension icons — add
icons/icon16.png,icon48.png,icon128.png(the extension won't load without them — generate from favicon.io) - Extension auth wiring — popup needs a settings screen where the user pastes their
apiUrl+authTokenintochrome.storage.local(right now they have to do it manually via DevTools) - Mobile sidebar — the sidebar is hidden on
< md; add a hamburger + sheet/drawer for mobile - Sync all platforms button — one-click sync on the platforms page (calls
syncPlatformfor each connected account in sequence)
- Search / filter in journal — search by title, filter by platform/tag/difficulty
- Journal tags page —
/journal/tags/[tag]filtered view - Weekly digest card — "This week vs last week" summary section on dashboard
- Timezone-aware streaks — currently uses UTC; should respect
profiles.timezone - AtCoder recent daily —
atcoder.tsreturns emptyrecentDaily; wire up the kenkoooo submissions API - Error boundaries — no error UI exists yet; add
error.tsxfiles per route segment
- OG image — dynamic OpenGraph image for the landing page
- PWA manifest — make the web app installable
- Export to CSV — download your activity data
- Leaderboard — compare with friends (requires public profiles)
- Vercel deployment guide in README
| Table | Purpose |
|---|---|
profiles |
Display name, handle, timezone — auto-created on signup |
platform_accounts |
One row per connected platform per user |
daily_activity |
Rolled-up solves + seconds per day per platform |
goals |
User-set daily/weekly targets |
journal_entries |
Markdown notes per problem |
focus_sessions |
Raw session rows from the extension |
All tables have Row Level Security — users can only read/write their own data.
git checkout -b feature/my-feature
# make changes
git commit -m "add: my feature"
git push