Mobile & Backend & Landing
9 readsOSG — Words Every Day
A mobile app that teaches German or English three words a day through notifications and Home Screen widgets, matched to the learner's level and job — with a FastAPI backend and a Vue admin dashboard.
Vue 3FlutterDartPythonFastAPISQLite
Overview
OSG helps people learn the vocabulary of a new language — German or English — without having to sit down and study. Three words a day arrive as notifications at 08:00, 12:00 and 18:00 and stay on the Home and Lock Screen widget. Each word comes with a translation and an example sentence, and the whole app speaks English, Uzbek or Russian.
It is aimed at people who work or plan to work abroad and have little time: they pick their level (A1–C1) and their job, and the daily words follow.

Key Features
- Level-aware planning: two words a day at the learner's CEFR level and one a step above; lower levels only when nothing else is left.
- Words for your job: about 1,000 words per language, including lists for 8 work areas (retail, IT, medicine, hospitality, construction, logistics, office, care work).
- Works without opening the app: the next 7 days of words and reminders are scheduled as local notifications; the widgets switch words on their own.
- Fixes reach phones in minutes: users flag a wrong translation on any word; after a fix in the dashboard, phones pick it up on their next check or with pull-to-refresh.
- Native widgets: Android Home Screen (Kotlin) and iPhone Home Screen small/wide + Lock Screen (SwiftUI, Liquid Glass aware).
- First-run guide: a coach-mark tour on the real screens and a one-tap "add the widget" flow.
Architecture
- Mobile app — Flutter / Dart: offline-first word bank in SQLite (Drift), a deterministic 7-day planner, local notifications and a widget bridge. Builds and ships on its own; the server is optional.
- Backend — Python / FastAPI: versioned word packs per language pair, anonymous usage pings, mistake reports, an admin API and Alembic migrations. Old app versions keep working: new fields and job-area words are opt-in per request.
- Admin dashboard — Vue 3: word editing with CEFR level and work areas, bulk import with dry run, translation coverage, reports and usage stats. A read-only demo runs as a static build with no backend.
- Content pipeline: word lists as JSON with a validator; job-area lists built from simple text files.

Links
- Live dashboard demo: demo-osg.kudratov.uz (sign in with
demo/demo) - Source code: github.com/kudratov25/osg-words
- Website: osg.kudratov.uz