A Progressive Web App for learning a foreign language in an accelerated way, built on a progressive curriculum and spaced repetition.

LinguaDrill is a Progressive Web App for learning foreign languages with maximum efficiency. It walks you up a progressive curriculum — alphabet → vocabulary → grammar → phrases — and uses spaced repetition to lock each item into memory before moving on. It currently focuses on Ukrainian, runs in the browser on desktop or mobile, and installs like a native app.

Highlights

  • Progressive learning path. Master the alphabet first, then vocabulary, grammar, and phrases — each stage builds on the last.
  • Spaced repetition that demands mastery. An item is only considered learned once you answer it correctly three times in a row.
  • Per-user progress tracking. Secure registration and login, with progress saved individually per user and per language.
  • Installable PWA. Responsive design that works on desktop and mobile and can be added to your home screen.
  • Clean REST API. All functionality is exposed through RESTful endpoints, backed by Node.js, Express, and SQLite.
  • Secure by construction. JWT authentication with bcrypt password hashing and rate-limited auth endpoints.

Installation

Built on Node.js (16+) with Express and SQLite. Clone, install, configure, and run:

git clone https://github.com/Solifugus/linguadrill.git
cd linguadrill
npm install
cp .env.example .env     # then edit .env (PORT, JWT_SECRET, DB_PATH, ...)
npm start

The server listens on port 4000 by default; open it in your browser and install it as a PWA from there.

Downloads & installation

Builds are coming soon. Grab the source from GitHub for now.