Sahara Pet Care is a production-oriented Flutter application built to streamline modern pet care workflows. It combines caregiver discovery, service booking, product shopping, adoption flows, live tracking, and chat in a single cross-platform experience.
The project is backed by Firebase services for authentication, data, and messaging, with Provider-based state management and modular code organization for maintainability.
| Module | Description |
|---|---|
| Authentication | Email/password and Google Sign-In flows with Firebase Auth |
| Caregiver Discovery | Browse, filter, and view caregiver profiles by service and location |
| Booking System | End-to-end booking flow with status lifecycle and booking history |
| Pet Profiles | Manage pets, favorites, and profile-linked pet context |
| Messaging | Chat and message models for caregiver communication workflows |
| Shopping | Product listing, cart, order placement, and order tracking |
| Adoption | Browse adoptable pets and manage adoption enquiries |
| Location and Maps | Geolocator, geocoding, and Google Maps powered flows |
| Notifications | Firebase Cloud Messaging and local notifications support |
| Admin Utilities | In-app admin seeding screen and script-based reseed support |
| Layer | Technologies |
|---|---|
| Frontend | Flutter, Dart, Material 3, Provider |
| Backend Services | Firebase Core, Firebase Auth, Cloud Firestore, Firebase Messaging |
| Media and Assets | Cloudinary, Cached Network Image, Image Picker |
| Mapping and Geo | Google Maps Flutter, Geolocator, Geocoding |
| Utilities | Shared Preferences, Intl, URL Launcher, UUID |
| Platforms | Android, iOS, Web, Windows, macOS, Linux |
Replace these placeholders with real mobile screenshots.
| Mobile Home | Mobile Booking | Mobile Shop |
|---|---|---|
Suggested local filenames for replacement:
- assets/images/mobile-home.png
- assets/images/mobile-booking.png
- assets/images/mobile-shop.png
- Flutter SDK 3.x
- Dart SDK 3.x
- Firebase project configured for target platforms
- Android Studio or VS Code with Flutter tooling
- Optional: Cloudinary account for media upload features
git clone https://github.com/Gaurav-205/Sahara.git
cd Sahara
flutter pub getCreate a .env file in the project root with values used by runtime config:
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_UPLOAD_PRESET=your_upload_preset
APP_NAME=Sahara Pet Care
APP_PRIMARY_COLOR=#1A2332
SUPPORT_EMAIL=support@example.com
SUPPORT_PHONE=+91XXXXXXXXXX
PRIVACY_EMAIL=privacy@example.com
COMPANY_ADDRESS=Your company address- android/app/google-services.json
- ios/Runner/GoogleService-Info.plist
If your Firebase project values changed, regenerate firebase options and update lib/firebase_options.dart.
flutter runSahara/
├── lib/
│ ├── main.dart
│ ├── firebase_options.dart
│ ├── config/
│ ├── models/
│ ├── providers/
│ ├── screens/
│ ├── services/
│ ├── theme/
│ ├── utils/
│ └── widgets/
├── assets/
│ ├── icons/
│ ├── images/
│ └── sounds/
├── test/
├── android/
├── ios/
├── web/
├── windows/
├── linux/
├── macos/
├── firebase.json
├── firestore.rules
├── firestore.indexes.json
├── QUICK_START_GUIDE.md
├── DATA_SEEDING_GUIDE.md
├── DEPLOYMENT_CHECKLIST.md
└── pubspec.yaml
| Path | Responsibility |
|---|---|
| lib/main.dart | App bootstrap, provider wiring, and route entry |
| lib/config/app_config.dart | Runtime configuration and environment parsing |
| lib/models | Domain entities for booking, products, chat, pets, orders, users |
| lib/providers | State and business flow orchestration |
| lib/screens | User-facing feature screens |
| lib/services | Data access and integration services |
| lib/widgets | Reusable UI components |
| lib/scripts/reseed_database.dart | Script-based data reseeding |
| lib/screens/admin_seed_screen.dart | In-app admin data seeding controls |
| Area | Details |
|---|---|
| Firestore Rules | Controlled by firestore.rules |
| Firestore Indexes | Defined in firestore.indexes.json |
| Firebase Config | Centralized in firebase.json and lib/firebase_options.dart |
| Messaging | Firebase Messaging is included in dependencies |
| Security | Harden rules and key restrictions before production deployment |
flutter analyze
flutter test
flutter test --coverageRelease builds:
flutter build apk --release
flutter build appbundle --release
flutter build ios --release
flutter build web --release| Workflow | Trigger | What it does |
|---|---|---|
| ci.yml | Push and pull_request on main | Sets up Flutter, restores dependencies, runs flutter analyze and flutter test |
Before release:
- Verify production Firebase project configuration
- Confirm .env values are production-safe
- Restrict API keys for package name, bundle id, and allowed APIs
- Review firestore.rules for least privilege
- Disable or guard any admin-only seed workflows
- Test critical flows: auth, booking, checkout, chat, and notifications
See DEPLOYMENT_CHECKLIST.md for full details.
| Document | Purpose |
|---|---|
| QUICK_START_GUIDE.md | Fast onboarding for development setup |
| DATA_SEEDING_GUIDE.md | Seeding strategy and safety notes |
| DEPLOYMENT_CHECKLIST.md | Production release readiness checklist |
- Create a feature branch from main.
- Keep changes focused and test locally.
- Run analyze and test checks before opening a PR.
- Update docs when setup or behavior changes.
MIT
