Skip to content

SuperHich/kidibook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

38 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

KidiBook πŸ“š

A personalized children's story app built with Flutter that delivers engaging, customizable stories for kids.

Features ✨

🎨 Personalized Experience

  • 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

πŸ“– Story Management

  • 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

πŸ“± Responsive Design

  • 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

🌍 Internationalization

  • Multi-language Support: English and French localization
  • RTL Support: Ready for right-to-left languages

πŸ“‹ Additional Features

  • 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

Screenshots πŸ“Έ

Home (Portrait) Home (Landscape) Story Detail Settings
Grid view with story cards Horizontal story cards Full story with image Theme customization

Getting Started πŸš€

Prerequisites

  • Flutter SDK (^3.6.0)
  • Dart SDK
  • Android Studio / VS Code
  • Android/iOS device or emulator

Installation

  1. Clone the repository

    git clone <repository-url>
    cd kidibook
  2. Install dependencies

    flutter pub get
  3. Generate localization files

    flutter gen-l10n
  4. Run the app

    flutter run

Building for Release

Android

  1. Configure signing (already set up):

    • Keystore file: android/heroapps-release-key.keystore
    • Key properties: android/key.properties
  2. Build APK

    flutter build apk --release
  3. Build App Bundle

    flutter build appbundle --release

iOS

flutter build ios --release

Project Structure πŸ“

lib/
β”œβ”€β”€ 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

Dependencies πŸ“¦

Core

  • flutter: UI framework
  • flutter_localizations: Internationalization support
  • intl: Date/number formatting

Networking & Storage

  • http: API requests
  • shared_preferences: Local data persistence
  • connectivity_plus: Network connectivity detection
  • cached_network_image: Image caching

UI Components

  • google_fonts: Custom typography
  • flutter_svg: SVG image support
  • marquee: Scrolling text animations
  • cupertino_icons: iOS-style icons

Development

  • flutter_launcher_icons: App icon generation
  • flutter_lints: Code quality rules

Configuration βš™οΈ

API Configuration

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'},
);

Localization

Add new languages by:

  1. Creating app_[locale].arb files in lib/l10n/
  2. Running flutter gen-l10n
  3. Adding locale to supportedLocales in main.dart

Theming

Customize colors in lib/theme.dart or add new theme colors in the settings page.

Features in Detail πŸ”

Story Personalization

  • Stories use {name} placeholders that get replaced with the child's name
  • Names are stored locally and persist across app sessions

Offline Support

  • Stories are cached locally after first download
  • App works without internet connection using cached data
  • Automatic fallback to default stories if no cache exists

Responsive Layout

  • Portrait: 2-3 column grid with vertical story cards
  • Landscape: 2 column grid with horizontal story cards
  • Dynamic sizing based on screen width

Theme System

  • 6 predefined color themes
  • System/Light/Dark mode support
  • Colored app bars with user's selected theme color

Contributing 🀝

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License πŸ“„

This project is licensed under the MIT License - see the LICENSE file for details.

Support πŸ’¬

For support, email [email protected] or create an issue in the repository.

Buy me a coffee

To keep app content up to date, please feel free to support me : https://buymeacoffee.com/superhich

Suggest your own story

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages