Skip to content

Nickalus12/Readingsprout

Repository files navigation

Flutter 3.27+ Dart 3.6+ Platforms MIT License

Reading Sprout

Hear. Type. Learn.

A beautiful, immersive sight word learning app for early readers.
Built with Flutter for a smooth, cross-platform experience.


Overview

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.

Features

Core Learning

  • 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

Adventure Mode

  • 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

Mini Games (10 games)

  • 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

Multi-Profile System

  • 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

Garden & Profile

  • 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

Stats & Tracking

  • 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

Polish

  • 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

How It Works

  1. First Launch β€” A parent enters the child's name for personalized encouragement
  2. Profile Picker β€” Tap your name card to sign in (supports multiple kids)
  3. Home Screen β€” Tap "Adventure Mode" to begin, or explore Mini Games and the Alphabet
  4. Zone Select β€” Pick an unlocked zone and level
  5. 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
  6. Word Complete β€” Confetti burst + success sound
  7. Level Complete β€” Fanfare animation, next level unlocks
  8. Mastery β€” Complete all 3 tiers (Explorer, Adventurer, Champion) to earn 3 stars

Quick Start

Prerequisites

Setup

# 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

Build & Deploy

# 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 --release

Audio Generation

Reading Sprout uses pre-generated audio clips for instant, offline playback. The included script supports both Gemini 2.5 Flash and Pro TTS models.

Generate All Audio

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 YourChildsName

The script supports batch mode (multiple words per API call) and automatically skips files that already exist, so it's safe to re-run.

Voices

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.

Audio File Structure

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 --name flag.

Project Structure

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)

Customization

Adding Words

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 words

Adjusting Difficulty

Words 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.

Changing the Theme

All colors and typography are centralized in lib/theme/app_theme.dart.

Dependencies

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

License

MIT License. See LICENSE for details.


Built with love for little readers everywhere.

About

🌱 Open-source app that teaches kids to read β€” one letter at a time. Hear it, type it, learn it. 220+ Dolch & Fry sight words, phonetic letter sounds, AI-generated TTS, beautiful animations. Flutter cross-platform. Built by a parent.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors