Inspiration

We set out to make donating feel as engaging as the apps people love. Static forms don’t create momentum, so we built a live, location‑based experience where generosity earns crowns, streaks build habits, and urgent needs surface in real time.

What it does

  • Live map of neighborhood “gyms” (donation hubs) with dynamic leadership
  • Quick donations with instant points, streaks, and leaderboards
  • Urgent‑need bonuses for items like Winter Coats and Baby Formula
  • AI notifications (Google ADK/Gemini) that celebrate milestones and nudge action
  • Transparent impact: see where help is needed now—and who’s leading

How we built it

  • Frontend: Streamlit dashboard (fast_dashboard.py) for map, donations, leaderboards
  • Backend: FastAPI (fast_backend.py) for /donate, /storages, /leaderboard, /health
  • Data: SQLite (database.py) with users, storages, donations, missing items, gym leadership
  • AI Agent: Google ADK + Gemini (notification_agent.py) for contextual messages
  • Performance: connection pooling, lightweight caching, targeted cache invalidation
  • One‑command launch: fast_launch.py boots backend + dashboard with health checks

Challenges we ran into

  • Real‑time leadership switching after donations (fixed with post‑donation recompute + cache clear)
  • Streamlit port conflicts on Windows; added safe cleanup and configurable ports
  • Balancing cache speed with freshness for map and gym status
  • SQLite concurrency under rapid donations; mitigated via pooled connections and short transactions
  • Secure, reliable ADK integration using .env and GOOGLE_API_KEY

Accomplishments that we're proud of

  • Crowns reflect donations within seconds
  • Clean, intuitive UI that shows impact at a glance
  • AI‑powered notifications that feel encouraging, not generic
  • Zero‑ops local setup—run everything with a single command

What we learned

  • Streamlit + FastAPI can deliver production‑feeling interactivity quickly
  • Immediate feedback loops (crowns, streaks, AI toasts) drive repeat engagement
  • Simple SQL aggregates can power compelling game mechanics when modeled well
  • Small, explicit caches outperform heavy layers for real‑time dashboards

What's next for Goodwill Hunting

  • Team challenges, neighborhood events, and donor quests
  • SMS/push alerts for critical shortages and streak reminders
  • Exportable impact reports for charities and donors
  • Optional cloud database + geofencing for city‑scale pilots
  • Accessibility, mobile‑first layout, and internationalization

Built With

+ 23 more
Share this project:

Updates