Best resources before you sit for your PSU
# PharmaPrep Uganda
Exam prep platform for Ugandan pharmacy pre-licensure & post-internship candidates.
## Phase 1 (this drop)
- Next.js 14 App Router + TypeScript + Tailwind scaffold, with your exact color tokens and Sora / Source Serif 4 / DM Sans fonts wired up
- Full Prisma schema — every model from the spec (User, Subject, Topic, Note, NoteImage, Video, Question, Option, QuizAttempt, Progress, Bookmark, Payment) plus NextAuth's Account/Session/VerificationToken tables
- NextAuth config: Credentials (bcrypt) + Google OAuth, JWT session with `role`/`plan` on the token
- Middleware protecting `/admin/*` (ADMIN only) and all authenticated routes
- Cloudinary, Upstash Redis (1‑hour note cache), Flutterwave (UGX pricing tiers), and Resend helpers, ready to be called from API routes in later phases
- next-pwa config with offline caching rules for pages and Cloudinary images
- Seed script: 12 subjects, 3 topics each, 2 notes/topic, 3 videos/topic, 10 questions/topic (5 free/5 premium), 1 admin + 3 student users
## Not yet built (coming in Phase 2+, following your build order)
Landing page, login/register UI, dashboard, subjects/topics pages, note viewer, video player,
quiz (practice + mock exam), question bank, admin panel (dashboard, note editor, question editor,
video manager, users table), Cloudinary/Flutterwave API routes + webhook, PWA icons, deploy config.
## Running it locally (PowerShell)
```powershell
# 1. Unzip and enter the project
cd pharmaprep-uganda
# 2. Install dependencies
npm install
# 3. Copy env template and fill in real values
Copy-Item .env.example .env
notepad .env # paste your Supabase, Google, Cloudinary, Flutterwave, Upstash, Resend keys
# 4. Push the schema to your Supabase Postgres database
npx prisma db push
# 5. Seed subjects/topics/notes/videos/questions + admin & sample users
npm run db:seed
# 6. Run the dev server
npm run dev
```
Then open
localhost.
**Admin login (after seeding):** `admin@pharmaprep.ug` / `Admi …