Gamified beach cleanup app with crypto rewards
TideUp transforms beach cleanups into an engaging mobile game where volunteers earn XP, level up, and convert in-app coins to Solana (SOL) cryptocurrency.
- 🗺️ Browse and join cleanup missions on an interactive map
- 📸 Check in with before/after photos
- ⭐ Earn XP and level up (20 levels: Beach Newbie → Ocean Legend)
- 💰 Convert coins to Solana cryptocurrency
- 🏆 Compete on leaderboards
- 🎖️ Unlock achievements
- 🤖 AI chat assistant for tips and help
- 📋 Create and manage cleanup missions
- 📍 Set custom locations with Google Maps
- 🤖 AI-powered photo verification (Gemini)
- 📊 Track volunteer impact metrics
- Frontend: Flutter (Dart)
- Backend: Firebase (Auth, Firestore, Storage)
- AI: Google Gemini 2.5 Flash
- Blockchain: Solana (devnet)
- Maps: Google Maps API
- State Management: Riverpod
- Flutter SDK (3.0+)
- Android Studio or VS Code
- Firebase account
- Google Cloud account (for Maps & Gemini APIs)
-
Clone the repo
git clone https://github.com/sudarshan-sridhar/tideup.git cd tideup -
Install dependencies
flutter pub get
-
Configure API Keys
Copy the example files and add your keys:
# Gemini API key cp lib/core/config/env.dart.example lib/core/config/env.dart # Edit env.dart and add your Gemini API key # Google Maps API key cp android/app/src/main/AndroidManifest.xml.example android/app/src/main/AndroidManifest.xml # Edit AndroidManifest.xml and add your Google Maps API key
-
Firebase Setup
- Create a Firebase project at console.firebase.google.com
- Enable Authentication, Firestore, and Storage
- Run
flutterfire configureto generatefirebase_options.dart - Add
google-services.jsontoandroid/app/
-
Run the app
flutter run
| Service | Where to Get | Used For |
|---|---|---|
| Gemini API | Google AI Studio | Photo verification, AI chat |
| Google Maps | Cloud Console | Mission locations map |
| Firebase | Firebase Console | Auth, database, storage |
For testing without creating an account:
| Role | Password | |
|---|---|---|
| Player | [email protected] | demo123456 |
| Organization | [email protected] | demo123456 |
lib/
├── core/
│ ├── config/ # Environment config (API keys)
│ ├── constants/ # App constants
│ ├── theme/ # Colors, themes
│ └── widgets/ # Shared widgets
├── features/
│ ├── auth/ # Login, registration
│ ├── home/ # Main screens, providers
│ ├── missions/ # Mission CRUD, check-ins
│ ├── community/ # Posts, social features
│ ├── profile/ # Player & org profiles
│ ├── wallet/ # Solana integration
│ ├── leaderboard/ # Rankings
│ └── ai_assistant/ # Gemini chat
└── services/
├── firebase/ # Firebase service
├── gemini/ # Gemini AI service
└── solana/ # Blockchain service
Pull requests are welcome! For major changes, please open an issue first.
Built for the Solana Hackathon
Clean beaches. Earn crypto. Save oceans. 🌊🐢♻️