Track sleep, feeding, diapers, milestones, and baby food recipes in one open-source Flutter app.
Sara is a cross-platform mobile application developed in Flutter to assist parents and caregivers with tracking essential baby care activities. The app supports real-time logging, shared access for multiple caregivers, and enriched baby care insights through charts, reminders, and local/offline support.
Track every precious moment of your baby's growth β sleep, feeding, milestones, and more.
The following diagram provides a high-level overview of the system architecture for the Sara: Baby Tracker & Sounds app.
It illustrates how the mobile app interacts with Firebase services, local storage, and third-party integrations.

This sequence diagram illustrates how activities are created, stored locally, and synced with Firestore.
This flowchart illustrates how a user can invite a caregiver and how the caregiver joins using the same baby profile.
- Breastfeeding (left/right)
- Bottle feeding (ml/oz)
- Pumping sessions
- Start/stop timers
- Sleep sound playback (white noise, lullabies etc.)
- Sleep duration analytics
- Wet / Dirty / Mixed diaper entries
- Monthly milestone checklist (localized)
- Weight, height tracking
- Teething & vaccination log
- Age-filtered recipe suggestions
- Ingredients, instructions, nutrition info
- Timeline view (grouped by date)
- Search & filter past activities
- Edit or delete past entries
- Multiple caregiver support
- Baby switcher for multi-baby households
- UI written using Flutter 3.x
- State management using flutter_bloc
- Navigation via custom
AppRouter
- Firebase Auth: User registration/login (email & password)
- Cloud Firestore: All activity, baby, and caregiver data
- Firebase Storage: For storing baby avatars locally and remotely
- Sqflite: Caching & offline access for activity logs
- Shared Preferences: Local config/settings
- Custom background sound player with loop & fade
- Local image picker for baby avatars
lib/
βββ app/ # themes, routing
βββ blocs/ # BLoC logic for each module
βββ core/ # Constants, helper classes, routing, localization
βββ data/
β βββ models/ # Data models
β βββ repositories/ # Firebase/local logic abstraction
β βββ services/ # Firebase, SQLite services
βββ l10n/ # Easy localization files
βββ views/
β βββ screens/ # Pages & screens
β βββ widgets/ # Reusable UI components
β βββ bottom_sheets/ # Bottom sheet activity forms
βββ main.dart # Entry point
βββ widgets/ # Common widgets
βββ firebase_options.dart # Firebase config
- Unit Tests for bloc logic and model classes
- Widget Tests for form behavior and UI rendering
- Integration Tests planned for full activity lifecycle
flutter pub get- Go to the Firebase Console
- Create a new project or open an existing one.
- Enable the following services:
- Authentication (Email/Password)
- Cloud Firestore
- Register your app:
- For Android, download
google-services.json - For iOS, download
GoogleService-Info.plist
- For Android, download
- Add them to:
android/app/directory (Android)ios/Runner/directory (iOS)
- Set up Firebase CLI (if not already):
Or manually configure
dart pub global activate flutterfire_cli flutterfire configure
firebase_options.dartbased on Firebase config files.
flutter run- β Published on Google Play and Apple App Store
- β Firebase Hosting for optional web admin panel
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature
- Make your changes and commit:
git commit -m "β¨ Add: new feature" - Push to your fork:
git push origin feature/my-feature
- Open a Pull Request
This project is licensed under the GNU GPL v3.0 license.
See the LICENSE file for full license text.

