the work

Zichen Zhang · AI Engineer · Perth

Side project

PTE Learner

A typing-based PTE study tool with accounts and FSRS spaced repetition for vocabulary, collocations and dictation.

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.

← All projects