LearnHub AI — an AI career coach helping Africa's next generation of tech talent find their best-fit tech career, with a personalized learning path and a streaming AI coach. Next.js + Supabase + Anthropic.
# LearnHub AI
**The AI career coach for Africa's next generation of tech talent.**
Take a 2-minute assessment → get an AI-reasoned shortlist of the tech careers that fit you (with honest local salary ranges and timelines) → generate a step-by-step learning roadmap of free-first resources → track progress to a certificate → ask a context-aware AI coach anything, 24/7. Free while in beta.
Built mobile-first for students, graduates, and career changers across Africa — designed for mid-tier Android phones on metered, intermittent connections.
## Stack
Next.js (App Router, React Server Components first) · TypeScript strict · Tailwind CSS · Supabase (Postgres + RLS, Auth, cookie sessions via `@supabase/ssr`) · Anthropic API (`claude-opus-4-8` for recommendation + roadmap, `claude-haiku-4-5` for the advisor chat) · Vercel.
## Getting started
```bash
git clone
github.com
cd learnhub-ai
npm install
cp .env.local.example .env.local # then fill in the values below
npm run dev #
localhost — keep port 3000
```
### 1. Supabase
Create a project at supabase.com, then in the dashboard → SQL Editor paste and run **`supabase/demo-setup.sql`** (the four migrations plus the seed, concatenated in order — 18 tables, RLS policies, triggers, 16 careers, 22 resources). Copy these into `.env.local`:
- `NEXT_PUBLIC_SUPABASE_URL`, `NEXT_PUBLIC_SUPABASE_ANON_KEY` — Settings → API
- `SUPABASE_SERVICE_ROLE_KEY` — same page; **server-only, keep secret**
For auth emails and Google login, set the Site URL and redirect allow-list under Authentication → URL Configuration (localhost in dev, your deployed URL in production).
### 2. Anthropic
Set `ANTHROPIC_API_KEY` (server-only; never exposed to the client). No credits yet? Set `AI_DEMO_MODE=true` and the app serves canned, schema-valid, clearly-labeled sample AI output — the full product loop works with zero API spend. Flip to `false` once the account is funded.
### 3. …