Mobile / Offline-first
English Vocabulary Mobile App
An offline-first vocabulary learning application built with Expo, React Native and TypeScript.
- Expo 54
- React Native 0.81
- TypeScript
- Expo Router
- Drizzle ORM
- expo-sqlite
- Reanimated
- Gesture Handler
- LLM APIs
Architecture overview
// maintainable systems
Expo / React Native
SQLite + Drizzle
LLM APIs
Overview
This mobile app is built around an offline-first local data layer. Vocabulary lives in SQLite through Drizzle ORM, flashcards are swipe-based, and optional LLM calls add sentence generation and contextual analysis with request-level token, cost and latency tracking.
Technology Stack
- Expo 54
- React Native 0.81
- TypeScript
- Expo Router
- Drizzle ORM
- expo-sqlite
- Reanimated
- Gesture Handler
- LLM APIs
Technical Implementation
- Offline-first architecture.
- Type-safe local data layer.
- SQLite with Drizzle ORM.
- Schema migrations.
- Swipe-based flashcard experience.
- Bottom sheets for contextual word details.
- LLM-powered sentence generation.
- Translation and contextual word analysis.
- Request-level token, cost and latency tracking dashboard.
Key Engineering Decisions
- Keep the source of truth on-device with SQLite so study flows work without a network connection.
- Use Drizzle for a typed schema and migrations instead of ad-hoc SQL strings.
- Treat LLM features as optional enrichment, with sentence generation and analysis sitting beside the local vocabulary store.
- Record token, cost and latency per request so model usage stays visible instead of hidden in the client.