A personalized children's story app built with Flutter that delivers engaging, customizable stories for kids.
- Custom Kid Names: Stories are personalized with your child's name
- Dynamic Theming: Choose from 6 beautiful color themes (Purple, Blue, Teal, Green, Orange, Pink)
- Light/Dark Mode: Automatic system theme support or manual selection
- Online Story Library: Fetches stories from a remote API with offline caching
- Favorites System: Mark and organize favorite stories
- Search & Sort: Alphabetical sorting (A-Z or Z-A)
- Grid/List Views: Toggle between visual grid and compact list layouts
- Portrait & Landscape Support: Optimized layouts for both orientations
- Landscape Cards: Horizontal story cards with square icons and titles
- Dynamic Grid: Responsive column counts based on screen size
- Beautiful UI: Material Design 3 with custom theming
- Multi-language Support: English and French localization
- RTL Support: Ready for right-to-left languages
- Copy Stories: Copy story text to clipboard for sharing
- Offline Mode: Cached stories available without internet
- Hero Animations: Smooth transitions between screens
- Pull-to-Refresh: Easy story library updates
| Home (Portrait) | Home (Landscape) | Story Detail | Settings |
|---|---|---|---|
| Grid view with story cards | Horizontal story cards | Full story with image | Theme customization |
- Flutter SDK (^3.6.0)
- Dart SDK
- Android Studio / VS Code
- Android/iOS device or emulator
-
Clone the repository
git clone <repository-url> cd kidibook
-
Install dependencies
flutter pub get
-
Generate localization files
flutter gen-l10n
-
Run the app
flutter run
-
Configure signing (already set up):
- Keystore file:
android/heroapps-release-key.keystore - Key properties:
android/key.properties
- Keystore file:
-
Build APK
flutter build apk --release
-
Build App Bundle
flutter build appbundle --release
flutter build ios --releaselib/
βββ controllers/
β βββ app_state.dart # App state management
βββ data/
β βββ stories_data.dart # Story data fetching & caching
βββ l10n/ # Localization files
β βββ app_en.arb # English translations
β βββ app_fr.arb # French translations
β βββ app_localizations.dart # Generated localizations
βββ models/
β βββ story.dart # Story data model
βββ pages/
β βββ home_page.dart # Main story grid/list
β βββ story_detail_page.dart # Individual story view
β βββ theme_settings_page.dart # Settings & theming
β βββ onboarding_name_page.dart # Initial name setup
βββ theme.dart # App theme definitions
βββ main.dart # App entry point
- flutter: UI framework
- flutter_localizations: Internationalization support
- intl: Date/number formatting
- http: API requests
- shared_preferences: Local data persistence
- connectivity_plus: Network connectivity detection
- cached_network_image: Image caching
- google_fonts: Custom typography
- flutter_svg: SVG image support
- marquee: Scrolling text animations
- cupertino_icons: iOS-style icons
- flutter_launcher_icons: App icon generation
- flutter_lints: Code quality rules
Stories are fetched from JSONBin.io. Update the API endpoint in lib/data/stories_data.dart:
final response = await http.get(
Uri.parse('https://api.jsonbin.io/v3/b/YOUR_BIN_ID'),
headers: {'X-Master-Key': 'YOUR_API_KEY'},
);Add new languages by:
- Creating
app_[locale].arbfiles inlib/l10n/ - Running
flutter gen-l10n - Adding locale to
supportedLocalesinmain.dart
Customize colors in lib/theme.dart or add new theme colors in the settings page.
- Stories use
{name}placeholders that get replaced with the child's name - Names are stored locally and persist across app sessions
- Stories are cached locally after first download
- App works without internet connection using cached data
- Automatic fallback to default stories if no cache exists
- Portrait: 2-3 column grid with vertical story cards
- Landscape: 2 column grid with horizontal story cards
- Dynamic sizing based on screen width
- 6 predefined color themes
- System/Light/Dark mode support
- Colored app bars with user's selected theme color
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email [email protected] or create an issue in the repository.
To keep app content up to date, please feel free to support me : https://buymeacoffee.com/superhich
In order to add you favorite short story or your own creation, you could send me your suggestions here : https://docs.google.com/forms/d/e/1FAIpQLSdA_-68QOrrYobiYMm9a-7hXRkT7lrd_r8OygdloH9embBvGg/viewform
Made with β€οΈ for children and families