AI-powered skill-gap tracking platform built with Next.js + Supabase.
It provides:
- Adaptive daily tests and unlimited practice tests
- Role-based skill benchmarking and priority roadmap generation
- AI-powered course recommendations and insights (Gemini)
- Student/professional onboarding flows
- Admin and mentor dashboards with chat moderation
- Node.js 18+ (recommended: latest LTS)
- npm
- A Supabase project
- A Gemini API key
npm installCopy the template:
cp .env.example .env.localSet values in .env.local:
NEXT_PUBLIC_SUPABASE_URL(required)NEXT_PUBLIC_SUPABASE_ANON_KEY(required)GEMINI_API_KEY(required for AI features)NEXT_PUBLIC_SITE_URL(optional, used for logout redirect inapp/auth/logout/route.ts)
Use supabase/actualused/used.sql in Supabase SQL Editor.
Notes:
supabase/actualused/used.sqlis the authoritative SQL used by this project.- The other SQL files under
supabase/are retained as reference/history and are not the active setup path. supabase/admin/admin_seed.sqlis still optional, after you create an auth user for super admin.
Create Supabase Storage bucket:
- Bucket name:
uploads - Access mode: public (current code uses
getPublicUrl)
npm run devOpen http://localhost:3000.
npm run dev: start development servernpm run build: production buildnpm run start: run production servernpm run lint: lint with Next.js ESLint config
- Next.js 14 App Router + TypeScript
- Supabase Auth + Postgres + RLS + Storage
- Tailwind CSS
- Framer Motion
- Recharts
- Gemini 2.5 Flash (server-side route handlers)
- App Router pages under
app/ - Shared layout shells in
components/AppShell.tsxandcomponents/AdminShell.tsx - UI primitives in
components/ui/* - Toast bus in
components/toast/*
- Route handlers under
app/api/** - Server-side auth/session via
@supabase/ssr - Domain logic utilities in
lib/*:lib/gapLogic.ts: category + priority scoringlib/date.ts: date helperslib/gemini.ts: Gemini response extraction/parsing helpers
- Core schema in
supabase/schema.sql - Feature migrations in
supabase/migrations/* - Admin/chat model in
supabase/admin/006_chat.sql - RLS policies are enabled for user-owned and admin-scoped access
//auth/login/auth/signup/auth/admin-login
/dashboard/onboarding/profile/daily-test/practice-test/skill-graph/roadmap/ai-insights/mentor-chat
/admin/dashboard/admin/users/admin/mentors/admin/mentor/admin/flagged
POST /api/ai/generate-questionsPOST /api/ai/recommend-coursesPOST /api/ai/analyzeGET /api/ai/insightsPOST /api/daily-test/submitPOST /api/practice-test/submitPOST /api/roadmap/generatePOST /api/roadmap/assessPOST /api/chat/send
middleware.tsenforces login for non-public routes- Redirects logged-in users away from
/auth/loginand/auth/signupto/dashboard - Guards
/admin/**by checkingadmin_userstable - Uses Supabase cookie-based server session
- AI-generated question correctness is currently client-visible in some flows (MVP tradeoff).
- Admin and mentor features are implemented, with chat moderation and assignment support.