FoodLink is an innovative Flutter mobile application that fights food waste by connecting donors and beneficiaries. Our geolocated platform facilitates the sharing of food surplus within your community.
- Secure Registration/Login with email validation
- Three user types: Donors, Beneficiaries, Administrators
- Complete profile management with personalized statistics
- Password recovery
- Offline mode with local JSON storage
- Donation creation with photos and geolocation
- Various categories: Fruits, vegetables, dairy products, meat, fish, etc.
- Detailed information: quantity, expiration date, pickup address
- Tracking statuses: Available, reserved, collected, expired
- Donor management of their own publications
- Simple reservation for beneficiaries
- Pickup slot management
- Real-time tracking of reservation statuses
- Complete history of transactions
- Automatic notifications for updates
- Interactive map with Google Maps
- Automatic user location
- Proximity search with distance filtering
- Integrated navigation to pickup points
- Intuitive discovery interface
- Advanced filters by category, distance, availability
- Text search in titles and descriptions
- Customizable sorting by date, proximity, urgency
- Real-time push notifications
- Personalized alerts: new reservations, confirmations, expirations
- Configurable notification settings
- Notification history
- Administrator dashboard with global metrics
- User management and moderation
- Donation and reservation supervision
- Detailed application statistics
- Framework: Flutter (Dart)
- Storage: Local JSON + Firebase (optional)
- Maps: Google Maps API
- Geolocation: Geolocator
- Notifications: Firebase Messaging
- State Management: Provider
- Interface: Material Design 3
- ✅ Android
- ✅ iOS
- ✅ Web
- ✅ Windows
- Flutter SDK (>=3.0.0)
- Dart SDK
- Android Studio / VS Code
- Google Cloud Account (for maps)
-
Clone the project
git clone https://github.com/acharbel54/foodlink.git cd foodlink -
Install dependencies
flutter pub get
-
Google Maps Configuration
- Create a project on Google Cloud Console
- Enable Google Maps API
- Add your API key in:
android/app/src/main/AndroidManifest.xmlios/Runner/AppDelegate.swift
-
Firebase Configuration (optional)
# Install Firebase CLI npm install -g firebase-tools # Configure Firebase firebase login flutterfire configure
-
Run the application
flutter run
lib/
├── core/ # Core business logic
│ ├── models/ # Data models
│ ├── providers/ # State management
│ ├── services/ # Business services
│ └── utils/ # Utilities
├── features/ # Features by module
│ ├── auth/ # Authentication
│ ├── donations/ # Donation management
│ ├── reservations/ # Reservation system
│ ├── maps/ # Mapping
│ └── notifications/ # Notifications
├── services/ # Storage services
└── shared/ # Shared components
- Register as a donor
- Create a donation with photos and details
- Manage received reservations
- Confirm pickups
- Register as a beneficiary
- Discover available donations
- Reserve desired products
- Pickup at indicated addresses
In lib/core/config/app_config.dart:
// Local mode (default)
static const String storageMode = 'local';
// Firebase mode
static const String storageMode = 'firebase';- Theme:
lib/core/theme/ - Localization: French/English support
- Permissions: Geolocation, notifications
- Fork the project
- Create a branch (
git checkout -b feature/new-feature) - Commit changes (
git commit -m 'Add new feature') - Push to branch (
git push origin feature/new-feature) - Open a Pull Request
This project is under MIT license. See the LICENSE file for more details.
- Email: contact@foodlink.app
- GitHub: FoodLink Repository
Thanks to all contributors who make this application possible and who participate in the fight against food waste.
Together, let's reduce food waste! 🌱