Skip to content
ENJanuary 20, 202510 min read

Building comedy ticketing for LATAM: architecture decisions

How I chose the tech stack for freeticket — a comedy ticketing and streaming platform operating across Latin America — and the tradeoffs I made along the way.

#nextjs#trpc#architecture#fullstack

When I started building freeticket, I had one constraint that shaped everything: I was the only developer. That meant the stack had to let me move fast without accumulating debt I couldn't pay back.

Why Next.js + tRPC

The combination of Next.js App Router with tRPC gives you end-to-end type safety from the database to the UI, without the ceremony of REST or the overhead of GraphQL. For a solo developer, this is a massive productivity multiplier — TypeScript catches your mistakes before your users do.

Server actions in Next.js 15 simplified the auth flow significantly. Mutations that previously required a full API route + client fetch now live in a single file. Less surface area, fewer bugs.

Database: Prisma + Supabase

Prisma gives you a type-safe ORM with migrations that actually make sense. Supabase gives you a hosted Postgres instance with Row Level Security, real-time subscriptions, and an S3-compatible storage layer. Together, they eliminate the need for a separate backend service for most use cases.

Payments: Stripe

Not a controversial choice. Stripe's Latin America coverage has improved dramatically — Colombia, Mexico, and Ecuador all have full support. The Stripe React SDK makes building a custom checkout straightforward, and their webhook system is battle-tested.

Video: Mux

Free2C (our streaming feature) needed a video infrastructure that handled adaptive bitrate, Latin American CDN coverage, and a simple API. Mux checks all three boxes. The React player component took about an hour to integrate.

Mobile: Flutter

80% of our users are on mobile. Building native apps for both iOS and Android with separate codebases was not an option. Flutter with BLoC state management gave us a single codebase with native performance and the ability to integrate platform-specific features (Apple Sign-In, Google Pay, in-app purchases) when needed.

What I would change

In retrospect, I would have invested earlier in observability. PostHog for analytics and Sentry for error tracking should have been day-one decisions, not afterthoughts.

Written by Lucas Leguizamo