A fun, colorful, and toddler-safe typing application built with Rust and Iced GUI framework. Perfect for introducing young children to letters and numbers on the keyboard!
- 🔤 Large, Colorful Letters: Each typed character appears in huge, randomly colored text
- 🔢 Letters & Numbers: Supports both alphabetic characters and numbers 0-9
- 🌈 Rainbow Welcome Screen: Engaging multicolored title to capture toddlers' attention
- 📏 Dynamic Sizing: Text automatically resizes based on the number of characters (up to 25)
- 🔒 Toddler-Safe:
- Escape key to exit (harder for toddlers to accidentally press)
- Window stays always-on-top
- Maximizable window for full immersion
- 🧹 Easy Clear: Press Enter to clear all letters and start fresh
- ⌫ Backspace Support: Remove the last typed character
- Rust (1.70 or later)
- Cargo
# Clone the repository
git clone https://github.com/yourusername/words-with-toddlers.git
cd words-with-toddlers
# Build in release mode for best performance
cargo build --release
# Run the application
cargo run --release
- Launch the app: Run
cargo run --release
- Type letters or numbers: They appear in large, colorful text
- Press Enter: Clear all text
- Press Backspace: Remove last character
- Press Escape: Exit the application
The app intelligently scales text size based on character count:
- 1-3 characters: Huge (300px)
- 4-6 characters: Very Large (200px)
- 7-10 characters: Large (150px)
- 11-15 characters: Medium (100px)
- 16-20 characters: Small (80px)
- 21-25 characters: Compact (60px)
For the safest toddler experience on macOS:
- Go to System Settings → Accessibility → Guided Access
- Enable Guided Access and set a passcode
- Launch Words with Toddlers
- Triple-click the Touch ID/power button to activate Guided Access
- The Mac is now locked to just this app until you triple-click and enter the passcode
- Window stays always-on-top to prevent accidental app switching
- Only Escape key exits (harder for toddlers to find)
- No external links or dangerous actions
words-with-toddlers/
├── src/
│ ├── main.rs # Application entry point
│ ├── app.rs # Main application logic
│ ├── letter.rs # Letter struct definition
│ ├── message.rs # Message handling
│ └── utils/
│ ├── mod.rs # Utils module
│ └── color.rs # Color conversion utilities
├── Cargo.toml # Dependencies
└── README.md # This file
- Rust - Systems programming language
- Iced - Cross-platform GUI library
- rand - Random number generation for colors
The application follows a clean, modular architecture:
- Separation of Concerns: Each module handles a specific responsibility
- Event-Driven: Uses Iced's Elm-inspired architecture
- Type Safety: Leverages Rust's type system for reliability
Each letter gets a unique random color using HSL to RGB conversion:
- Hue: Random value between 0-360°
- Saturation: 80% for vibrant colors
- Lightness: 60% for good visibility on dark background
This project is open source and available under the MIT License.
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
- Teaching toddlers letter recognition
- Number familiarity
- Keyboard awareness
- Color recognition
- Cause-and-effect learning
- Safe computer interaction
- Iced GUI framework developers
- Rust community
- Parents everywhere dealing with curious toddlers!
Made with ❤️ by Mystic