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.pyboots 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
.envandGOOGLE_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

Log in or sign up for Devpost to join the conversation.