Inspiration

We've always been frustrated watching plastic wash up on beaches during summer trips. The problem felt overwhelming, 8 million tons of plastic enter our oceans every year, and traditional cleanup efforts rely on one-time volunteers who rarely come back.

Then we thought: What if cleaning beaches felt less like a chore and more like a game? What if you could actually earn something for helping the environment?

That's when TideUp was born, a mobile app that turns beach cleanups into a rewarding adventure with real crypto incentives.

What it does

TideUp connects volunteers with beach cleanup missions while making the experience genuinely fun.

For Players:

  • Browse and join cleanup missions on an interactive map
  • Check in at locations with before/after photos
  • Earn XP and level up from "Beach Newbie" to "Ocean Legend" (20 levels!)
  • Collect coins and convert them to Solana (SOL) cryptocurrency
  • Compete with friends on leaderboards
  • Unlock achievements like "First Splash," "Trash Titan," and "Streak Master"
  • Chat with an AI assistant for cleanup tips and app help

For Environmental Organizations:

  • Create and manage cleanup missions with custom locations
  • Set difficulty levels, rewards, and participant limits
  • Review volunteer submissions through AI-powered verification
  • Track impact metrics; total trash collected, volunteers helped, missions completed

The Magic: Our Gemini AI analyzes before/after cleanup photos to automatically verify legitimate efforts, estimate trash collected, and catch any fake submissions. Organizations spend less time reviewing and more time organizing.

How we built it

We split the work based on our strengths:

Frontend & Design: One teammate focused on the UI/UX, crafting the ocean-themed visual identity, building out Flutter widgets, and making sure every screen felt polished and intuitive.

Backend & Integration: The other teammate handled Firebase setup (Auth, Firestore, Storage), Gemini AI integration for photo verification and chat, Solana wallet logic, and wiring everything together with Riverpod state management.

Our Stack: Flutter — Cross-platform mobile (Android & iOS from one codebase) Firebase — Authentication, Firestore database, Cloud Storage Google Gemini 2.5 Flash — AI photo verification + in-app chat assistant Solana — Blockchain rewards system (devnet) Google Maps API — Interactive mission locations Riverpod — State management

The whole thing runs in real-time: when someone joins a mission, everyone sees it instantly. When a cleanup is verified, rewards hit your wallet immediately.

Challenges we ran into

  • Firestore query limitations hit us hard. We wanted to filter missions by status AND sort by date, but Firestore requires composite indexes for compound queries. Spent hours debugging "empty results" before realizing the queries were silently failing. Solution: fetch all data and filter in-memory for complex cases.

  • Gemini model naming tripped us up. Preview models kept throwing "unexpected model name format" errors. Had to dig through documentation to find the correct stable model string.

  • Real-time UI updates after creating content was tricky with FutureProviders. Created a mission? Dashboard showed empty until manual refresh. Fixed it by invalidating providers after mutations and adding pull-to-refresh.

  • Coordinating design and backend required constant communication. We had to iterate on data models when the UI needed fields we hadn't planned for, and adjust layouts when API responses came back differently than expected.

Accomplishments that we're proud of

  • Full dual-user system: Players and organizations have completely different experiences from the same app
  • AI verification actually works: Upload two beach photos and Gemini correctly identifies cleanup quality, estimates trash weight, and recommends approval/rejection
  • The gamification feels good: Watching your XP bar fill up and hitting a new level is genuinely satisfying
  • 20 real Michigan beach locations: Grand Haven, Holland State Park, Sleeping Bear Dunes, actual places you can visit
  • Crypto integration that makes sense: Not blockchain for blockchain's sake, but a real incentive mechanism
  • Clean, polished UI: The design work really paid off, the app looks and feels professional

What we learned

Splitting work by strength works. Having one person own design/frontend while the other owns backend/integration kept us from stepping on each other's toes and let us move fast.

  • Starting with the data model. We refactored Firestore collections multiple times because we didn't think through queries upfront. Lesson learned: design your database around your UI's read patterns.
  • AI APIs need babysitting. Model names change, rate limits exist, and error messages aren't always helpful. Build in retries and graceful fallbacks from day one.
  • Gamification psychology is real. Adding a simple streak counter completely changed how "sticky" the app felt. Small dopamine hits keep people coming back.

What's next for TideUp

Short term:

  • Push notifications for nearby missions and streak reminders
  • Social features: friend leaderboards, team cleanups, photo sharing
  • Mainnet Solana integration with real token economics

Medium term:

  • Partner with actual environmental organizations for official missions
  • Add more verification types: weight sensors, GPS path tracking
  • Expand beyond beaches to parks, rivers, and urban cleanup

Long term:

  • DAO governance where top players vote on feature priorities
  • Corporate sponsorship program where companies fund cleanup rewards

The ocean plastic crisis isn't going away, but maybe we can make solving it a little more fun. 🌊

Built With

Share this project:

Updates