A mobile app implementing the DISTAR phonics methodology pioneered by Siegfried Engelmann, combined with spaced repetition learning algorithms and a touch of AI.
π² Download
Early Reader is available for free on the App Store:
No account required. No data collection. Works completely offline.
π¨βπ§ Who Is This For?
I built this app for my 4-year-old daughter to help her learn to read before starting first grade. As a parent, I wanted something based on proven research rather than gamified edutainmentβand I'm sharing it with other parents who feel the same way.
Early Reader is designed for:
- π Pre-schoolers (ages 3-6) learning to read
- πͺ Parents who want a research-backed approach
- π Homeschooling families
- π©βπ« Tutors and educators using phonics-based instruction
β¨ What Makes This Special
This isn't just another flashcard app. Early Reader is built on decades of research:
- DISTAR Phonics: A systematic, phonics-first approach developed by Siegfried Engelmann that has been proven effective for teaching children to read
- Spaced Repetition (SM-2): The same algorithm used by Anki and SuperMemo, optimized for long-term retention
- AI-Powered Cards: Contextual word generation and imagery that adapts to your child's learning journey
π Content Stats
The app includes a comprehensive curriculum with pre-generated assets:
| Category | Cards | Description |
|---|---|---|
| Letters (Phonemes) | 31 | Individual letter sounds (a, m, s, etc.) |
| Digraphs | 12 | Two-letter combinations (sh, th, ch, etc.) |
| Words | 590 | Decodable words built from learned phonemes |
| Sentences | 88 | Simple sentences for reading practice |
| Total Cards | 721 | Complete DISTAR-based curriculum |
Asset Breakdown
- πΌοΈ 721 images β AI-generated illustrations for each card
- π 4,195 audio files β Professional voice recordings including:
- Word/phoneme pronunciations
- Prompts ("What sound does this make?")
- Encouragement ("Great job!")
- Hints and retry prompts
π Getting Started
Prerequisites
- Node.js 18+
- Git LFS (for large assets like images and audio files)
- Expo CLI (
npm install -g expo-cli) - iOS Simulator (macOS) or Android Emulator
Installation
# Clone the repository git clone https://github.com/melvinmt/early-reader-app.git cd early-reader-app # Install Git LFS (if not already installed) # macOS brew install git-lfs # Ubuntu/Debian sudo apt install git-lfs # Initialize Git LFS git lfs install git lfs pull # Install dependencies npm install
Running the App
Development Mode (Expo Go)
Note: Speech recognition features require a native build and cannot run in Expo Go. For full functionality, use native development mode (see below).
# Start the development server npm start # Or use the init script ./init.sh
Then:
- Press
ifor iOS Simulator - Press
afor Android Emulator - Scan QR code with Expo Go app on physical device
Native Development (Required for Speech Recognition)
Speech recognition features require a native build. Follow these steps:
- Install dependencies and prebuild native code:
# Install npm dependencies npm install # Generate native iOS/Android projects # Use WITHOUT --clean to preserve existing Xcode project settings # Only use --clean if you need a completely fresh start npx expo prebuild # For iOS, install CocoaPods dependencies cd ios && pod install && cd ..
Important:
- Use
npx expo prebuild(without--clean) to preserve your existing Xcode project settings - Only use
npx expo prebuild --cleanwhen you need a completely fresh native project (this will overwrite all custom settings) - If you have custom Xcode settings, consider using Expo config plugins to apply them programmatically
- Run on a physical device (speech recognition requires a physical device):
# For iOS - requires physical device connected npx expo run:ios --device # For Android - can use emulator or physical device npx expo run:android
Important Notes:
- iOS Simulator does NOT support speech recognition - you must use a physical iOS device
- After prebuild, always use
npx expo run:iosornpx expo run:androidrather than opening Xcode/Android Studio directly - The app will gracefully degrade if microphone/speech permissions are denied - it will work normally without pronunciation checks
Permissions
The app requests the following permissions:
- Microphone: Required for speech recognition to help children practice pronunciation
- Speech Recognition: Required to validate pronunciation accuracy
Both permissions are optional - the app functions normally if permissions are denied, just without pronunciation validation features.
π Project Structure
early-reader-app/
βββ app/ # Expo Router screens
β βββ auth/ # Authentication screens
β βββ onboarding/ # Onboarding flow
β βββ ...
βββ src/
β βββ components/ # Reusable UI components
β βββ services/ # API and storage services
β β βββ storage/ # SQLite database
β βββ stores/ # Zustand state stores
β βββ types/ # TypeScript types
βββ scripts/ # Build and generation scripts
βββ features.json # Feature tracking
βββ claude-progress.txt # Development progress log
π Tech Stack
- Framework: React Native + Expo
- Navigation: Expo Router
- State Management: Zustand
- Database: SQLite (local-first)
- Animations: React Native Reanimated + Lottie
π The DISTAR Method
DISTAR (Direct Instruction System for Teaching Arithmetic and Reading) was developed by Siegfried Engelmann in the 1960s. Key principles include:
- Explicit phonics instruction - Teaching letter-sound relationships directly
- Carefully sequenced lessons - Building skills progressively
- Immediate feedback - Correcting errors right away
- High engagement - Keeping children actively involved
Combined with spaced repetition, this approach maximizes retention while minimizing study time.
π€ Contributing
We welcome contributions! Here's how to get involved:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Contributor License Agreement
Because this project has a commercial release on the App Store and Google Play, all contributors must sign a Contributor License Agreement (CLA). This grants Instalabs, LLC the right to include your code in our app store releases while keeping your contribution open source for the community.
π License
This project is dual-licensed to support both open research and sustainable development:
-
Community Use: The source code is available under the GNU Affero General Public License v3.0 (AGPLv3). This ensures that the research and educational methodology remain open for everyone to learn from and improve.
-
Commercial Use: The official builds on the Apple App Store and Google Play are published by Instalabs, LLC under a standard commercial license.
Copyright Β© 2025-2026 Instalabs, LLC
