KivaLoop is not just an app — it's your daily coffee companion. Connect, explore, spin, and sip your way through a community built around the love of coffee.
Add your screenshots here
- Sign in with Email & Password
- Sign in with Google
- Secure session management
- Browse coffee stories shared by the community
- View photos, thoughts, and favorite moments
- React and comment on posts
- Stay connected with coffee lovers around you
- Spin the wheel daily for a chance to win points
- Collect and redeem points for discounts and offers at your favorite cafés
- Gamified rewards system to keep you coming back
- Search for nearby coffee shops using Mapbox
- Explore new spots around your area
- Plan your next café visit with ease
- View what others love to drink today
- Explore users' favorite cafés
- See earned and redeemed reward points
- Share your coffee vibe with the community
- Upload photos and write about your coffee moments
- Build your presence in the KivaLoop circle
| Layer | Technology |
|---|---|
| Framework | Flutter |
| Language | Dart |
| Authentication | Firebase Auth |
| Database | Firebase Firestore |
| Storage | Firebase Storage |
| Maps & Search | Mapbox GL |
| State Management | Provider |
| Image Picker | image_picker |
| HTTP | http |
- Flutter SDK (3.x or above)
- Dart SDK
- Android Studio or VS Code
- A Firebase project set up
- A Mapbox account and access token
1. Clone the repository
git clone https://github.com/Musta99/Kivaloop.git
cd Kivaloop2. Install dependencies
flutter pub get3. Set up Firebase
- Create a Firebase project at console.firebase.google.com
- Add an Android and/or iOS app to your Firebase project
- Download
google-services.jsonand place it inandroid/app/ - Run
flutterfire configureif using FlutterFire CLI
4. Set up Mapbox Token
Add your Mapbox token to android/local.properties (this file is gitignored):
MAPBOX_TOKEN=your_mapbox_token_here
⚠️ Never hardcode your Mapbox token directly in source files. It is read securely fromlocal.propertiesat build time.
5. Run the app
flutter runlib/
├── Features/
│ └── Screens/
│ ├── auth/ # Login & signup screens
│ ├── home/ # Home feed
│ ├── map_screen/ # Mapbox coffee shop map
│ ├── profile/ # User profiles
│ ├── fortune_wheel/ # Daily spin wheel
│ └── post/ # Create & view posts
├── State-Management/ # Provider state classes
│ └── AddPostState/
├── core/ # Theme, constants, utilities
└── main.dart
This project uses local.properties to keep secrets out of source control.
| Secret | Location |
|---|---|
| Mapbox Token | android/local.properties → MAPBOX_TOKEN |
| Firebase Config | android/app/google-services.json |
Make sure these files are listed in .gitignore:
android/local.properties
google-services.json
dependencies:
flutter:
sdk: flutter
firebase_core:
firebase_auth:
cloud_firestore:
firebase_storage:
google_sign_in:
provider:
image_picker:
http:
flutter_easyloading:
mapbox_maps_flutter:
geolocator:
flutter_easyloading:
image_picker:
http:
uuid:
flutter_screenutil:
geocoding:This project is licensed under the MIT License. See the LICENSE file for details.
Musta99
- GitHub: @Musta99
"Every sip leads to a new connection, a new place, or a new reward." ☕