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

Share this project:

Updates