PROJECT 01Gypsy Live

Gypsy Live.

A social, dating, and live-streaming app — designed, built, and run end-to-end across six codebases and five languages, by one engineer.

solo buildend-to-endjul 2025 → presentlive on both stores
Gypsy Live app icon
01overview

Gypsy Live folds four products into one app — Tinder-style swipe dating, an Instagram-style social feed, Twitch-style live streaming, and a virtual-currency economy — live on the App Store and Google Play in 29 languages.

I designed and built the entire stack alone since July 2025: the Flutter client, the Laravel API and admin panel, a Go realtime service, a Python video transcoder, three Cloudflare Workers, and the Docker infrastructure beneath them. Six codebases, five languages — no team, no inherited code.

It runs in production today with live streaming, paid subscriptions, in-app purchases, and push — backed by a tiered media pipeline that pre-warms hot video across 300+ Cloudflare edge locations every 30 minutes. The product feels calm because the plumbing is.

02architecture

Six codebases, five languages — one engineer end to end.

Here is how data actually moves. Flutter is the only client. Laravel owns persistence, auth, and billing. Go carries realtime. Python re-encodes video. Three Cloudflare Workers sit at the edge — all on a Docker stack I deploy myself.

tier 01
client
FL
dart · iOS + Android
Flutter mobile app

67 screens · 32 service modules · MVVM (Stacked) + GetX

357+ iOS builds360+ Android builds
REST · WebSocket · HLS
tier 02
services
LV
php · laravel 8
Laravel API + admin

REST API + Blade admin panel · 20+ controllers · 522 routes · queue worker

rolepersistence · auth · billing
GO
go · gin · redis
Go realtime hub

WebSocket fan-out · Redis pub/sub · presence · chat · live signaling

rolerealtime
PY
python · ffmpeg
Python transcoder

HLS encode · quality variants · thumbnails · upload to R2

rolevideo pipeline
R2 · Stream · Images
tier 03
edge
W1
worker
R2 edge cache

smart TTL by media age and hotness

W2
worker
CDN pre-warmer

pushes hot video to 300+ edge locations every 30 min

W3
worker
R2 archiver

HTTP-Range archival for cold media

infraDocker Compose · Ubuntu VPS
NginxPHP-FPMGo binaryMySQLRedisQueue workerLet's Encrypt
03engineering

Four pieces I'd hold up as proof.

The shipped product feels calm. Getting there did not — these four are the engineering behind it.

A · backend
96%fewer DB queries on the feed

From ~250 queries to ~8 per feed request.

I rewrote the feed read path — batch queries, selective SELECT, bounded eager-loading, and seven composite indexes tuned to the real query shapes. Response time fell from 3–5s to 0.3–0.6s, a 90% cut, with no change to the API surface.

before
3–5s
after
0.3–0.6s
B · video
1,883lines · the preload service

Jank-free feed playback, sub-second live swipes.

A 35-controller pool with adaptive concurrency pre-warms upcoming feed videos; an adaptive-HLS pipeline pre-caches the first segment for ~1s startup. Triple-engine Agora orchestration swaps between live rooms in under a second. I forked flutter_video_caching to fix iOS proxy-restart on backgrounding.

pool
35 ctrls
engines
3× Agora
swap
< 1s
C · edge
300+edge locations pre-warmed / 30 min

Three Workers between the user and R2.

A smart-TTL cache in front of R2; a pre-warmer that pushes the next batch of hot video to every edge location on a 30-minute cron; and an HTTP-Range archiver that streams cold media without paying full-egress cost.

cache
smart TTL
warmup
30-min cron
archive
HTTP Range
D · realtime
Gin + Redisthe realtime hub

A Go service that doesn't drop connections.

A WebSocket hub on Gin with Redis pub/sub fan-out — carrying presence, chat, gift events, and live-room signaling. Decoupled from PHP so API restarts never kick a room; the client auto-reconnects up to 10 times.

presence
chat
gifts
live
integrated & in production
Stripe CashierApple IAPFirebase AuthFCMAgora RTCCloudflare R2CF StreamCF ImagesBanubaSnap Camera Kit
04impact

The system, in numbers.

6
codebases
all solo
5
languages
dart · php · go · py · js
67
screens
Flutter client
522
API routes
Laravel
96%
fewer queries
feed endpoint
90%
faster response
3–5s → 0.3–0.6s
29
languages
store listings
717+
builds shipped
357+ iOS · 360+ Android

Reported from production — App Store and Google Play listings, the Laravel route table, and the internal build counter. Snapshot taken May 2026.

05screens

Five surfaces, one calm.

captured from the live app
Gypsy Live — Discovery
01Discovery
Gypsy Live — Social feed
02Social feed
Gypsy Live — Post list
03Post list
Gypsy Live — Chat & gifts
04Chat & gifts
Gypsy Live — Profile
05Profile