Inspiration
Every group trip starts with excitement and ends in chaos. Someone asks "where should we go?", the group chat explodes with 200 messages, dates never get locked, a Google Sheet gets screenshotted back and forth, and after the trip nobody wants to be the one chasing everyone for money. We'd all lived this pain, so we built the tool we wished existed: one place where a group can actually decide and plan together.
What it does
TripBase lets a group plan a trip from start to finish without the group-chat chaos:
Invite by link — join a trip through a link with optional password and usage limits. Vote on dates — everyone picks workable dates, visualized as a heatmap. Vote on destinations — propose places with photos and upvote to decide fast. Drag-and-drop itinerary — arrange activities across days with real-time updates. Transparent expense splitting — the app calculates who owes whom, with a confirmation checklist. Photo album, public share link, and a community feed to discover and clone other trips' itineraries. It's mobile-first, installable as a PWA, and fully bilingual (Vietnamese / English).
How we built it
The frontend is React 19 with TanStack Start & Router and Vite, styled with Tailwind CSS and Radix UI, animated with Framer Motion. The backend is a NestJS API on PostgreSQL (Neon serverless), with Cloudflare R2 for image storage, Google OAuth and email/password for authentication, Nodemailer for transactional email, and Polar + SePay for international and Vietnamese payments. i18next powers localization, and everything is version-controlled on GitHub.
Challenges we ran into
Real-time collaboration: keeping the itinerary in sync when multiple people drag-and-drop activities at once, without flicker or conflicts. Making drag-and-drop feel instant while staying consistent with the server — optimistic updates that gracefully roll back on failure. Integrating multiple third-party services (OAuth, R2 storage, two payment providers) and keeping all secrets safely out of version control. True bilingual support — designing the UI so Vietnamese and English both fit naturally instead of bolting translations on at the end. Accomplishments that we're proud of We shipped a complete, real product — not a demo. Group voting, a smooth drag-and-drop itinerary, transparent expense settlement, a sharable community feed, PWA install, and full Vietnamese/English support all work end to end. It solves a problem we genuinely have, and it's polished enough that our own friends would actually use it.
What we learned
We learned how to design collaborative, real-time experiences where many people act on the same data, and how optimistic UI makes interactions feel instant. Integrating OAuth, storage, and payments taught us disciplined secrets management. Building mobile-first and as a PWA forced us to think about how the product is really used on the go, and shipping bilingual from the start showed us that localization shapes the entire UX rather than being an afterthought.
What's next for TripBase — Group travel planning, all in one place
AI itinerary suggestions — generate a draft plan from a destination and number of days. Live maps and route optimization for each day's activities. Smarter expense features — receipt scanning, multi-currency, and direct payment links. Native mobile apps and push notifications for votes and updates. Richer community — trending destinations, templates, and creator profiles. Booking integrations for flights, stays, and activities directly inside a trip.
Built With
- cloudflare
- google-auth
- neon
- nestjs
- novus
- polar
- postgresql
- react
- sepay


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