Why
Studying for PTE, I kept my mistakes in Notion. Reading them back didn't make them stick. In the exam, fill-in-the-blank and dictation are typed, so practice should be typed too.
What it does
It started as a fork of qwerty-learner, an open-source typing trainer, and became a PTE practice site with accounts:
- Three drills: vocabulary, FIB collocations and WFD full-sentence dictation. Dictation is marked the PTE way, ignoring case and punctuation.
- Spaced repetition: reviews are scheduled with FSRS. Anything typed wrong on the first try comes back the next day, and the daily word review has to be finished first.
- My own question bank: FIB and WFD items are grouped into chapters by import date and come in daily from my Notion notes.
- Import API: admins create API keys and bulk-import with a script.
How it's built
React, Vite and Jotai on the front end. The back end is one Hono app that runs on its own locally and as a Vercel function in production. Data lives in Postgres on Neon, with Drizzle migrations applied on every deploy, and better-auth handles sign-in with public sign-up turned off.
The original kept everything in the browser's IndexedDB. I removed it entirely, so every record goes through the API and practice carries over between devices.