Skip to content

Sheet
03 / 05
Rev
2026.08
Title
DeutschlyProduct 01
Author
B. BolekFrankfurt/M
Status
Shipping · v1.0.10
Platforms
iOS · Android
Price
Free
Built with
React Native · Expo SDK 57 · TypeScript · SQLite

Product · Deutschly

German, A1 to C2, entirely offline.


01/What it is

An app that assumes a train tunnel.

Deutschly is the app I wanted while learning German in Frankfurt. Most learning apps assume a connection, an account, and a subscription. This one assumes a train tunnel.

Everything ships inside the binary: an 11,084-word dictionary with 63,507 inflected forms indexed, 873 lessons, 2,496 authored grammar questions, 21 reading texts, and seven games. There is no server behind it, no account to create, and no network call to make. Uninstall it and the only thing that leaves is the app.

The part I care most about is the lookup. Type a form you actually met in the wild — fährt, gemacht, Häuser, hauser without the umlaut — and it resolves to the right headword and tells you which form you typed and why.


02/In the app

Reference depth first, drills second.

  • The dictionary entry for gehen, showing past forms, tagged examples in four tenses, and a conjugation table.

    Dictionary entry — gehen

  • The Akkusativ grammar explainer with an article table, worked sentences and tappable verbs.

    Grammar explainer — Akkusativ

  • A grammar question answered, with the correct answer marked and an explanation underneath.

    Practice — answer and explanation


03/What ships in it

Counted from the database that ships in the binary.

Headwords
11,084
Indexed word forms
63,507
Senses
11,296
Worked examples
3,841
Grammar questions
2,496
Grammar topics
52
Lessons
873
Lesson units
201
Reading texts
21
Games
7 + duel
Levels
A1 – C2
Network calls
0

Headwords by level

  • A11,008
  • A21,588
  • B12,584
  • B24,007
  • C11,711
  • C2186

04/Features

Six things it does, and what each one actually means.

A/Dictionary

Form-aware lookup
63,507 inflected forms are indexed against 11,084 headwords. Type fährt and you land on fahren, with a note telling you it is third person singular present.
Forgiving input
Missing umlauts resolve anyway — hauser finds Häuser. Search runs in both directions, German to English and back.
Full tables
Conjugation and declension tables for every verb and noun, expanded programmatically at build time: strong verbs, separable prefixes, plurals, cases, comparison.
Context
3,841 worked examples, 752 synonym links, and 429 illustrated words.

B/Learning path

873 lessons, 201 units
A1 through C2, each unit a themed set of lessons. Lessons resume where you closed them.
Placement
A placement test at the start so you begin somewhere useful rather than at Hallo.
Reading
21 graded texts. Tap any underlined word to open its dictionary entry without losing your place.

C/Practice

2,496 grammar questions
52 topics from Präsens to Konjunktiv II, in four exercise styles: multiple choice, fill-in-the-blank, tap-to-order sentence building, and case identification. Every answer gets an explanation.
Spaced repetition
An Anki-style SM-2 scheduler with Nochmal / Schwer / Gut / Einfach and next-interval previews. Questions you miss come back sooner.
Seven games
Wort-Blitz, Bilderrätsel, Der-die-das, Wortpaare, Konjugations-Trainer, Satzbau and Diktat — short timed rounds with streak bonuses.
Duels
Head-to-head against another phone on the same Wi-Fi, over a direct TCP socket. No server involved, so it works on a train too.

D/Camera scanner

Point at German
Photograph a sign, a menu, a form. On-device ML Kit text recognition boxes every word in the image.
Tap to look up
Recognised words are resolved against the bundled dictionary as you scan, so a tap opens the entry. Offline, like the rest of it.

E/Progress

XP and levels
An append-only XP ledger drives levels — earning raises them, spending never lowers them.
Streaks that survive a bad week
Daily quests and badges, plus streak freezes you earn on level-ups and can spend to repair a missed day.
Stats
A 14-day activity chart, per-topic accuracy, and per-game bests.

F/Yours

No account
There is nothing to sign up for and nothing to log in to. All state is one SQLite file on the device.
Backup you control
Every user table serialises to a single JSON file through the share sheet, and restores in one transaction. It survives an uninstall because you keep it.
German interface
The app speaks German at you throughout; explanations are in English. Light, dark, and selectable colour themes.

05/How it is built

The decisions that made the offline part possible.

Content pipeline
Vocabulary and grammar are authored as JSON. A build step validates them, expands German inflections programmatically, and emits the SQLite file that ships with the app. Bad content fails the build rather than the user.
Content updates without a reinstall
The build stamps a content hash. On launch the app compares it, swaps stale content tables in place, and remaps user rows by natural key — so a new word list reaches existing installs over the air with saved words and progress intact.
Logic you can test in Node
The lookup engine, the SM-2 scheduler, and the answer graders are pure functions with no React Native imports and no clock of their own — time is injected. They run under Jest against the real built database.
Native modules, carefully
Over-the-air updates land on every binary sharing a version, so any new native dependency bumps the app version and is imported lazily. Older binaries degrade instead of crashing.

06/Get it

Free, on both stores, with nothing to sign up for.

All products