All work
UX/UI Design · Full-Stack Development · Medical Education · 2026

Ophthalmology Question Bank

A digital question bank built for ophthalmology residents: filtered practice sessions, spaced repetition, timed exams, and per-topic progress tracking across 8 subspecialties. Designed and developed solo, entirely with Claude Code.

Live on Railway
Role Designer + Developer
Year 2026
Stack React · FastAPI · Railway
Users Medical Residents
/ The Problem

No question bank.
No systematic prep.

Ophthalmology residents faced specialty exams covering years of material across 8 topics. Their resources: scattered PDFs, old printouts, and handwritten notes. There was no structured way to practice, no way to know where they stood, and no way to target weak areas before an exam.

01
Scattered PDFs

Past exam questions existed only as loose files and paper printouts from 2018 onward. There was no digitized library, no search, no organization by topic or year. Finding a relevant question meant manually sifting through folders.

02
No systematic practice

Residents had no way to run timed practice sessions, filter by subspecialty, or track which question types they struggled with. Preparation was entirely passive: reading notes, hoping coverage was enough.

03
Unpredictable exams

Exams draw from multiple question formats across all 8 subspecialties simultaneously. Without a structured bank, there was no way to simulate an actual exam or identify which areas needed the most work before exam day.

/ The Platform

A question bank
built for residents

A React frontend over a FastAPI backend, deployed on Railway. The interface uses Cormorant Garamond for headings (referencing the academic register of medicine) and Onest for body text. Each of the 8 subspecialties has its own color identity, carried through every chip, bar, and tag in the app.

Ophthalmology Medical Specialty
Dashboard
Practice
Library
Progress
Admin
New Practice Session
Select topics, quantity, and configuration
Cataract
Cornea
Glaucoma
Oculoplastics
Pediatrics & Strabismus
Retina
Uveitis
Optics & Optometry
5
10
20
40
Start Practice
/ Practice Experience

Timed sessions,
real exam conditions

Practice mode runs through the question bank the way an exam does: one question at a time, answer visible only after submission. Residents choose how many questions, which topics, and whether to enable a countdown timer. The session ends with a per-question breakdown showing what they got right, what they got wrong, and why.

Spaced repetition surfaces questions answered incorrectly more often in future sessions, gradually shifting the focus toward weak areas without requiring any manual curation.

Practice Mode
Free-form sessions with any combination of topics and question counts. Immediate feedback after each answer with explanation text.
Exam Mode
Countdown timer active. No feedback mid-session. Results only after submission. Simulates actual exam pressure.
Spaced Repetition
Questions missed in previous sessions appear more frequently. The algorithm surfaces the gaps without requiring manual review selection.
Question 3 of 10
Cornea
A 45-year-old patient presents with progressive central corneal opacity. The most likely cause is:
A
Advanced-stage keratoconus
B
Endothelial Fuchs dystrophy
C
Bacterial corneal ulcer
D
Corneal pannus from trachoma
Confirm Answer
/ Key Features

Four question types,
three filter dimensions

01

Question Library

Browse the full digitized bank from 2018 onward. Multi-select filters let residents narrow by topic, year, question type (multiple choice, true/false, fill-in, matching), or category. Any combination is valid; the results update live.

Library
Cornea
2022
Retina
2021
Multiple choice
T/F
2023
Fuchs corneal dystrophy…
2022
Vogt's sign in keratoconus
2022
Limbal cell transplant
2022
02

Progress Tracking

A live dashboard tracks overall accuracy, total questions answered, session count, and a streak counter. Per-topic breakdowns show which subspecialties are strongest and which need more sessions. No manual logging required.

Progress by topic
Cataract
82%
Cornea
67%
Glaucoma
74%
Retina
51%
Uveitis
88%
03

Admin Panel

A protected admin panel lets instructors upload and categorize new questions directly in the app. Questions are tagged by topic, year, type, and category. The bank grows without touching the codebase: instructors manage content, residents see it immediately.

Add Question
Upload from file or paste text
Topic
Type
Year
Category
/ Progress and Results

Know exactly
where you stand

My Progress
74%
accuracy
284
questions answered
74%
overall accuracy
19
sessions completed
🔥7
consecutive days
By topic
Cataract
82%
Cornea
67%
Glaucoma
74%
Oculoplastics
91%
Retina
51%
Uveitis
88%

The progress dashboard gives residents a single answer to the most important pre-exam question: which topics actually need work? The accuracy ring shows global performance; the per-topic bars make the gaps visible immediately.

Session history lets residents see how their accuracy has shifted over time on a specific topic, whether repeating a topic moved the needle, and which sessions were strongest. The streak counter adds a lightweight accountability layer without gamification friction.

All progress data is stored server-side through the FastAPI backend. Nothing is lost between sessions, and the algorithm uses session history to weight spaced-repetition scheduling for future practice.

/ Outcomes

From scattered notes
to structured preparation

The platform replaced scattered PDFs with a searchable, filterable question bank that mirrors the format and distribution of real specialty exams. Residents can now simulate exam conditions, track per-topic accuracy, and target weak areas before exam day.

0
Ophthalmology subspecialties, each with its own color identity and filter dimension
0
Question types: multiple choice, true/false, fill-in, matching
0
Filter dimensions (topic, year, question type) selectable in any combination
0
Responsive across web, tablet, and mobile. Designed for studying anywhere.

"Having the entire bank filterable by topic and year changes how you prepare. You can actually target the areas you know are weak instead of hoping you covered everything."

Medical Resident, Specialty Program