Hear. Type. Learn.
A beautiful, immersive sight word learning app for early readers.
Built with Flutter for a smooth, cross-platform experience.
Reading Sprout teaches children to read through the complete Dolch Sight Word list β 220 essential words organized into 22 progressive levels across 5 adventure zones, plus 49 bonus words. Every word comes with pre-generated audio so the app works completely offline with zero latency.
The app supports multiple player profiles, so siblings can each have their own progress, avatar, and stats. It's designed for kids who can't read yet β all navigation is visual and tappable with audio cues.
- 269 sight words with professional-quality TTS audio pronunciation
- Letter name audio β hear each letter's name as you type it
- Phonetic letter sounds β optional phonics mode for deeper learning
- 3-tier mastery system β Explorer, Adventurer, and Champion tiers per level
- Gentle error handling β wrong letters trigger a shake animation and haptic feedback, never harsh penalties
- 22 unlockable levels with progressive difficulty
- 5 themed zones β Whispering Woods, Shimmer Shore, Crystal Peaks, Skyward Kingdom, Celestial Crown
- On-screen keyboard optimized for small hands, plus full hardware keyboard support
- Celebration animations β confetti, glow effects, and praise on every completed word
- Unicorn Flight β Fly through clouds collecting letters to spell words
- Lightning Speller β Race against the clock in a storm-themed spelling challenge
- Word Bubbles β Pop floating bubbles in the right order to spell words
- Memory Match β Classic memory card game with sight words
- Falling Letters β Catch letters as they fall from the sky
- Cat Toss β Toss letter balls to a cat to spell words
- Letter Drop β Physics-based letter dropping with forge2d β aim and fling letters into slots
- Rhyme Time β Match rhyming words together
- Star Catcher β Tap stars in a constellation to spell words in space
- Paint Splash β Tap paint blobs in the right order on an art canvas
- High score tracking per game
- Profile picker β "Who's Playing?" screen with large, kid-friendly profile cards
- Per-player progress β each child has their own levels, stats, and achievements
- Voice feedback β tapping a profile says the child's name aloud
- Customizable avatar with unlockable accessories (hats, face paint, glasses)
- Word Garden β watch flowers grow as you master words
- Stickers β earn collectible stickers for achievements
- Words Mastered β an interactive star-map constellation showing all mastered words
- Daily Treasure β tiered chest system (3 chests/day) with rarity-based rewards
- Streak tracking β build daily streaks for bonus rewards
- Per-letter tap tracking β how many times each letter has been tapped
- Confusion tracking β which letters get mixed up (e.g., tapping "b" when "d" was expected)
- Word attempt stats β attempts, mistakes, and accuracy per word
- Mini game stats β games played, scores, and completion tracking
- Session time tracking β automatic play time recording
- Haptic feedback β tactile responses on correct, wrong, and completion events
- Responsive UI β scales properly across different phone sizes (tested on S24, tablets, desktop)
- Tappable UI β tap words, labels, zone names, and the logo to hear them spoken aloud
- Bundled fonts β Fredoka font included offline, no internet needed
- Dark mode UI with a calming color palette designed for focus
- Fully offline β no internet required after initial setup
- Cross-platform β Android, iOS, Windows, macOS, Linux
- First Launch β A parent enters the child's name for personalized encouragement
- Profile Picker β Tap your name card to sign in (supports multiple kids)
- Home Screen β Tap "Adventure Mode" to begin, or explore Mini Games and the Alphabet
- Zone Select β Pick an unlocked zone and level
- Gameplay β A word is spoken aloud. The child types each letter:
- Correct letter β reveals with a letter name sound, green glow, and light haptic
- Wrong letter β gentle shake, tile flashes red, haptic buzz, try again
- Word Complete β Confetti burst + success sound
- Level Complete β Fanfare animation, next level unlocks
- Mastery β Complete all 3 tiers (Explorer, Adventurer, Champion) to earn 3 stars
- Flutter SDK 3.27+
- Python 3 + ffmpeg (for audio generation only)
- A Google AI Studio API key (free tier works)
# Clone the repository
git clone https://github.com/Nickalus12/Readsprout.git
cd Readsprout
# Install Flutter dependencies
flutter pub get
# Generate personalized audio (see Audio Generation below)
python scripts/generate_tts_gemini.py --api-key "YOUR_KEY" --name YourChildsName
# Run the app
flutter run# Android APK
flutter build apk --release
# Install via ADB
adb install -r build/app/outputs/flutter-apk/app-release.apk
# Windows
flutter build windows --release
# iOS
flutter build ios --releaseReading Sprout uses pre-generated audio clips for instant, offline playback. The included script supports both Gemini 2.5 Flash and Pro TTS models.
pip install requests
# Generate word pronunciations, letter names, and personalized phrases
python scripts/generate_tts_gemini.py \
--api-key "YOUR_GEMINI_API_KEY" \
--name YourChildsName
# Preview a single word
python scripts/generate_tts_gemini.py --api-key "YOUR_KEY" --preview "hello"
# Generate only specific categories
python scripts/generate_tts_gemini.py --api-key "YOUR_KEY" --only words
python scripts/generate_tts_gemini.py --api-key "YOUR_KEY" --only letter_names
python scripts/generate_tts_gemini.py --api-key "YOUR_KEY" --only phrases --name YourChildsNameThe script supports batch mode (multiple words per API call) and automatically skips files that already exist, so it's safe to re-run.
Test voices at aistudio.google.com/generate-speech:
| Voice | Style |
|---|---|
| Kore (default) | Warm, friendly |
| Puck | Upbeat, energetic |
| Charon | Calm, clear |
| Aoede | Bright, cheerful |
Change the voice with --voice Puck.
assets/audio/
βββ words/ # 269+ word pronunciations (one .mp3 per word)
βββ letter_names/ # 26 letter name sounds (a.mp3 = "ay", b.mp3 = "bee", ...)
βββ phonics/ # 26 phonetic letter sounds (a.mp3 = "ah", b.mp3 = "buh", ...)
βββ phrases/ # Personalized encouragement (generated with --name)
βββ effects/ # UI sound effects (success, error, level_complete)
Note: The
phrases/directory contains personalized audio with the child's name and is excluded from version control. Generate it locally with the--nameflag.
lib/
βββ main.dart # Entry point, window setup, font config
βββ app.dart # Root widget, service init, text scaling
βββ theme/
β βββ app_theme.dart # Colors, typography, dark theme
βββ models/
β βββ word.dart # Word data model
β βββ progress.dart # Level progress, tiers, & word stats
β βββ player_profile.dart # Avatar config & profile data (Hive)
βββ data/
β βββ dolch_words.dart # 220 Dolch words across 22 levels + 5 zones
β βββ avatar_options.dart # Avatar customization & treasure rewards
β βββ phrase_templates.dart # Encouragement phrase templates
β βββ rhyme_words.dart # Rhyme word pairs for Rhyme Time game
β βββ sticker_definitions.dart # Sticker collection & mini game thresholds
βββ services/
β βββ audio_service.dart # Audio playback (words, letters, phonics, effects)
β βββ progress_service.dart # Level & tier progress persistence
β βββ profile_service.dart # Player profile, avatar, daily treasure
β βββ player_settings_service.dart # Multi-profile management
β βββ stats_service.dart # Per-letter/word/game interaction stats
β βββ streak_service.dart # Daily streak tracking
β βββ review_service.dart # Spaced repetition review scheduling
β βββ high_score_service.dart # Mini game high scores
βββ screens/
β βββ home_screen.dart # Main menu with tappable tagline & stats
β βββ profile_picker_screen.dart # Multi-profile "Who's Playing?" screen
β βββ name_setup_screen.dart # First-launch name entry
β βββ level_select_screen.dart # Zone-based level selection
β βββ game_screen.dart # Core typing gameplay with 3 tiers
β βββ profile_screen.dart # Garden profile with avatar & stats
β βββ avatar_editor_screen.dart # Avatar customization
β βββ alphabet_screen.dart # Full alphabet explorer
β βββ mini_games_screen.dart # Mini game selection hub
β βββ mini_games/ # 10 individual mini game screens
βββ utils/
β βββ haptics.dart # Centralized haptic feedback
βββ widgets/
β βββ word_garden.dart # Animated flower garden per level
β βββ word_constellation.dart # Interactive star-map of mastered words
β βββ sticker_book.dart # Collectible sticker display
β βββ daily_treasure.dart # Daily tiered chest reward system
β βββ floating_hearts_bg.dart # Physics-based animated background
β βββ streak_badge.dart # Streak display widget
β βββ ... # Additional UI components
assets/
βββ audio/ # Pre-generated TTS audio files
βββ images/ # Logo and app images
βββ google_fonts/ # Bundled Fredoka font (offline)
scripts/
βββ generate_tts_gemini.py # TTS audio generation (Gemini Flash/Pro)
Edit lib/data/dolch_words.dart to modify levels, or add bonus words. Then regenerate audio:
python scripts/generate_tts_gemini.py --api-key "YOUR_KEY" --only wordsWords are grouped into 22 levels of 10 words each in dolch_words.dart, organized across 5 themed zones. Reorder or regroup them to change the progression.
All colors and typography are centralized in lib/theme/app_theme.dart.
| Package | Purpose |
|---|---|
| audioplayers | Audio playback |
| shared_preferences | Progress & settings persistence |
| hive / hive_flutter | Local key-value database for profiles |
| flutter_animate | Smooth animations |
| confetti | Celebration effects |
| google_fonts | Fredoka typography (bundled offline) |
| forge2d | 2D physics engine (Letter Drop game) |
| window_manager | Desktop window control |
MIT License. See LICENSE for details.
Built with love for little readers everywhere.