Waste Grid is a Flutter mobile app prototype intended to gamify recycling and waste collection. It provides an earn ecosystem with challenges, redeemable rewards, and a leaderboard. The architecture is controller-driven with organized models, controller, and pages folders.
- Onboarding and authentication flows
- Home dashboard with resource cards and quick actions
- Community feed and challenges
- Scan-based waste submission (camera + barcode)
- Rewards system and leaderboard
- Profile settings with location/notifications/security
The project now includes Firebase to enhance its scalability and provide robust backend services. Key integrations include:
- Authentication: Secure user sign-in and management.
- Real-time Database/Firestore: For live updates to the community feed and leaderboard.
- Analytics: To track user engagement and app performance.
- Cloud Messaging: For pushing notifications and reminders to users.
This integration ensures the app can handle a growing user base while maintaining a responsive and dynamic experience.
- Ensure Flutter SDK is installed (>=3.8.0 as required).
- Clone repository:
git clone <repo-url> cd waste_grid
- Install dependencies:
flutter pub get
- Generate JSON-model code (for
json_serializable):flutter pub run build_runner build --delete-conflicting-outputs
- Android:
flutter run -d android
- iOS:
flutter run -d ios
- Web:
flutter run -d chrome
lib/main.dart: App entry and route registrationlib/controller/*: Business controllers (GetX compatible pattern)lib/models/*: Local data models, e.g.,CommunityImage,Challengelib/pages/*: UI screens and nested page folderslib/theme: Colors, typography, and global stylelib/utils: Reusable helper functionslib/widget: Shared widget components (buttons, cards, etc.)
lib/pages/home/home_screen.dartlib/pages/recycle/recycle_screen.dartlib/pages/earning/earning_screen.dartlib/pages/community/community_screen.dartlib/pages/scan/scan_screen.dartlib/pages/profile/*
- Widget tests can be added under the
testfolder (currently one template test included). - Run tests:
flutter test
- If you see Dart version mismatch, set SDK to compatible version in
pubspec.yaml:environment: sdk: ">=3.8.0 <4.0.0"
- If
build_runnerfails due to conflicting outputs, run:flutter pub run build_runner clean flutter pub run build_runner build --delete-conflicting-outputs