Rebottle is a cross-platform mobile application built with Flutter and Firebase that encourages recycling and sustainability through a rewards-based system. The app allows users to scan QR codes on recyclable bottles, earn points, and reach milestones while helping reduce waste and promoting environmental awareness.
- QR Code Scanning: Users can scan unique QR codes attached to recyclable bottles using their smartphone camera
- Rewards System: Earn points with each scan and track progress toward sustainability milestones
- Role-Based Access: Different experiences for customers and store owners
- Store Owner Dashboard: Track scans and customer milestones
- User Authentication: Secure login and account management through Firebase
- Cross-Platform: Works seamlessly on both iOS and Android devices
- Frontend: Flutter/Dart
- Backend: Firebase
- Database: Cloud Firestore
- Storage: AWS
- Authentication: Firebase Authentication
- Hosting: Firebase Hosting
- Flutter SDK (version 3.0 or higher)
- Dart SDK (version 2.17 or higher)
- Firebase CLI
- Android Studio / Xcode (for deployment)
-
Clone the repository:
git clone https://github.com/Matt940624/Rebottle-App.git -
Navigate to the project directory:
cd Rebottle-App -
Install dependencies:
flutter pub get -
Configure Firebase:
- Create a Firebase project at firebase.google.com
- Add Android and iOS apps to your Firebase project
- Download and add the configuration files to your project
- Enable Authentication, Firestore, and Storage in Firebase console
-
Run the app:
flutter run
- Registration: Users create an account selecting either customer or store owner role
- Bottle Registration (Store Owners): Store owners can register bottles with unique QR codes
- Scanning: Customers scan the QR code on bottles when recycling them
- Rewards: Points are awarded for each scan, with milestones that unlock benefits
- Analytics: Store owners can view analytics on recycling rates and user engagement
lib/
├── models/ # Data models
├── screens/ # UI screens
├── services/ # Firebase and other services
├── utils/ # Utility functions
├── widgets/ # Reusable UI components
├── main.dart # Entry point
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request