StartupClosedTechnical founder & sole developer
Boletapp

Anti-fraud ticketing for nightlife and concerts in Colombia.

Role
Technical founder and sole developer
Period
Jun – Nov 2026
Status
Closed
  • Next.js
  • TypeScript
  • Expo
  • FastAPI
  • PostgreSQL
  • Google Cloud
  • Vercel
Open the browsable replica
Noche PacíficaPerreo Neón Vol. 4

The screenshot gets in twice

At a club door, the ticket is usually just an image. Someone screenshots it and sends it over WhatsApp; whoever arrives first gets in, and the second person starts an argument in the line. The venue doesn't even know how many real tickets it sold.

Commissions nobody can reconcile

Promoters sell through their own network and earn a commission. Without a link that leaves a trail, the numbers get done from memory on Tuesday and end in an argument.

The table nobody pays for

Tables get booked over chat. If nobody shows up, the venue is left with an empty table and nothing to show for the night.
Fan webDiscover, buy, pay
Fan appThe ticket lives on the phone
Dashboard and Pro appSales, capacity, promoters, finance
The doorScanner with no signal

Boletapp in one sentence

A ticketing and access-control platform for nightlife and concerts in Colombia: the fan buys, the ticket lives on their phone, the door validates it and the organizer sees everything live.

Fully white-label

The fan buys on the venue's own page, with its logo and colors. Boletapp doesn't appear anywhere: the relationship with the audience belongs to the organizer.

Four surfaces, one backend

The fan web, the fan app, the dashboard with its Pro app and the door all talk to the same API and the same database.

Discover and choose

Posters, dates, ticket types and tables, designed phone-first, because that is where people buy.

Paying the way Colombia pays

Card, PSE and Nequi in the same checkout. It asks for the minimum that event needs: name, email and phone.

The ticket just arrives

To the inbox and the app, ready for the door. Nothing to install to buy.
Noche PacíficaNoche de ClaveSat · 10:00 PM · General
Live code · changes in 10s

A QR that won't sit still

Every ticket carries an HMAC-based rotating QR: the code changes every few seconds and only the ticket holder's phone knows how to produce it.

Works with no data

The code is generated on the phone, offline. In a club line, signal is the first thing to go.

The screenshot expires

Try it: take a screenshot and wait. By the time it reaches another phone over WhatsApp, that code no longer opens the door.
Door 1 · Noche de ClaveOnline · up to date
AdmitGEN-4821 · General
1 inside

  • Admit
  • Already in
  • Not valid

Offline-first

The doorman scans from any phone's browser. If the signal drops, the phone keeps validating on its own; try the switch.

Several doors at once

Each door validates on its own. When signal comes back the reads reconcile, and a ticket gets in exactly once, even if it was shown at two doors.

Three answers

Admit, Already in or Not valid. Nothing to interpret at two in the morning.
Demo data
COP 173,855,000Revenue · 90 days
2,253Tickets
1,370Check-ins
517 / 2,850Live capacity

What the organizer watches

Sales by ticket type and live capacity, on the night and in the days before.

Promoters with a link and a commission

Each promoter sells with their own link and every sale stays tied to them, commission included. No more Tuesday spreadsheet.

Customers, finance and floor plans

A customer base with consent, event finance, the venue-branded page and an editor to draw the venue and its tables.

Ask your own data

An assistant inside the dashboard that answers from the organizer's own data: how much sold, which promoter is performing, how capacity is going.

Tables and charts

It answers with tables and charts when a number alone won't do, on the web and in the Pro app.

Nothing without a yes

It can propose changes, but it executes nothing until the organizer confirms.
App StoreGoogle PlayApproved

On the App Store

Boletapp App Store listing
  • Boletapp, screenshot 1
  • Boletapp, screenshot 2
  • Boletapp, screenshot 3
  • Boletapp, screenshot 4
  • Boletapp, screenshot 5
  • Boletapp, screenshot 6

Expo and React Native

One codebase, two store apps: Boletapp for the fan (the ticket and the events) and Boletapp Pro for the team (the door, the live dashboard and promoters).

Inside the monorepo

The apps live next to the web and the API, and share types and the QR engine with the web.

Published

Both passed App Store and Google Play review.
WebNext.js · ReactApp fanExpo · iOS / AndroidApp ProExpo · iOS / AndroidVercelNext.js · BFFCloud RunModular FastAPI APICloud SQLPostgreSQLRLS per organizationCI/CDGitHub ActionsCloud StoragefilesCloud KMSkeysPaymentslocal gatewayEmailResendSMSTwilioLLMBoletabot

Vercel + Next.js

The web and a BFF: the browser never talks to the API directly.

Cloud Run + FastAPI

A modular monolith split by domain: one deployment, clear boundaries between modules.

Cloud SQL + PostgreSQL with RLS

Each organization only sees its own rows, and the database guarantees it, not the code's good memory.

Keys, files and third parties

Sensitive keys live in Cloud KMS and files in Cloud Storage. Payments, email, SMS and Boletabot's LLM are providers behind the API; GitHub Actions runs the tests and deploys.
≈ 370,000lines of code (Python, TypeScript, SQL)
545commits in 5 months
95database migrations
20+domain modules in the backend
1,700+Python tests
275TypeScript test files
96web pages
199BFF routes
80app screens
2store apps from one codebase
  1. Jun 2026First commit
  2. Jul 2026In production
  3. iOS · AndroidApps approved on the App Store and Google Play
  4. Nov 2026Company closed

Where it ended up

In production from July to November 2026, with apps approved on the App Store and Google Play. I closed the company in November 2026.

What I learned

  • One person can build it end to end: web, apps, backend, payments and infrastructure.
  • A B2B product doesn't take off without someone out on the street selling it every day.
  • Running real payments in production changes how you write every line.

The code is kept

The repository is private and kept, ready to pick back up.

Tech stack

Next.jsTypeScriptReact Native/ExpoFastAPIPostgreSQL + RLSCloud RunCloud SQLCloud KMSBigQueryWompiExpo EASResendTwilioTurborepo