About the project
What inspired us
When emergencies happen, people want to help immediately, but donation flows are often fragmented and hard to verify. We built TomatoHub to solve that trust gap: help organizations launch campaigns quickly, let supporters contribute in multiple ways, and make progress transparent for everyone.
How we built it
TomatoHub is built as a full-stack platform focused on production-ready architecture from day one:
- Frontend: Next.js (public pages + role-based dashboards)
- Backend: FastAPI with modular API/services structure
- Database: PostgreSQL
- ORM & migrations: SQLAlchemy + Alembic
- Auth: JWT-based auth with supporter/organization/admin roles
- Core features shipped: campaign creation/publish/close, donations, volunteer registration, QR check-in/check-out, transparency logs, campaign media upload, and admin management tools
We designed AI as assistive, not fully autonomous, so organizations stay in control while AI helps with normalization, prioritization, and transparency summaries.
A simple example of our priority scoring direction is:
[ \text{PriorityScore} = 0.35U + 0.25V + 0.20Q + 0.20G ]
Where (U) = urgency, (V) = vulnerability, (Q) = verification confidence, and (G) = supply gap.
Challenges we faced
- Keeping schema changes safe while iterating fast (enum conflicts, migration ordering, relation updates)
- Connecting frontend auth flows to real backend APIs and removing mocks cleanly
- Handling deployment and environment differences across local and cloud
- Maintaining data integrity for auditability (who did what, when, and in which campaign)
- Balancing speed with reliability for hackathon delivery
What we learned
- Trust is a product feature, not just a UI feature
- Good database design + migration discipline saves huge time later
- “Manual-first, AI-assisted later” is a practical path for real-world rollout
- Clear role boundaries (supporter, organization, admin) simplify both UX and security
- End-to-end transparency (logs, check-ins, status transitions) is essential for community adoption
Built With
- alembic
- fastapi
- jwt
- leaflet.js
- next.js
- postgresql
- python
- react
- render
- sqlalchemy
- supabase
- tailwind-css
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.