← All projects

ExamHype

Upload a PDF or a slide deck and get MCQs you can actually quiz yourself on. Timed mode, streaks, and resume-mid-quiz through localStorage.

Problem

Wanted a study tool that could take whatever I'm studying from, a PDF, a slide deck, some pasted text, and turn it into MCQs I could actually quiz myself on. Built the parts I actually wanted as a student rather than what a study-app template would tell me to build.

Role

Solo.

How it works

React 18 + TypeScript frontend on Vite. Root App.tsx has a compile-time COMING_SOON flag; when true, only ComingSoonLanding renders (waitlist + countdown). Full mode routes: /, /login, /app (Upload → Quiz → Results), /dashboard, all Supabase-auth-gated by RequireAuth.

Upload flow: UploadScreen posts to /extract, backend rejects >25MB with 413, extracts via PyMuPDF (PDF) or python-pptx (PPTX) with a 30s timeout, caps text at 10,000 chars. POST /generate-stream runs SSE: backend builds the prompt with cache_control: ephemeral, streams through AsyncAnthropic.messages.stream(), emits progress, log, and done events.

JSON-parse fallback chain: json.loads, then regex bracket extraction, then object-by-object recovery, so a partial response still gives you something usable. Quiz state persists to localStorage on every action, so closing the tab mid-quiz resumes cleanly. Timed mode, shuffle mode, study mode, keyboard shortcuts, bookmarks, and exports to JSON, CSV, Markdown, or Anki TSV.

Stack
React 18 TypeScript Vite Tailwind CSS Supabase Framer Motion FastAPI Python Anthropic API PyMuPDF python-pptx genanki
Result

Live at examhype.vercel.app in coming-soon mode. Full app is built and functional behind the flag.