Systems I built and run in production, one concept build, and the audience I grew around them. Each one comes with the problem, the build, and the numbers.
Systems I built and run
Each one is in production or published, with the numbers it produced.
Multilingual Booking Platform
Booking and payments for a Tokyo photo studio whose customers book from 20+ countries.
An iOS app where contract photographers claim shoots, bill the customer's remaining balance, and send their month-end invoice. Every rule about money, hours and customer data is enforced by the same Go API the booking site uses.
Step 01
Claim a job
Open jobs appear in the app. One tap claims it.
Step 02
Track earnings
Pay is calculated per job, automatically.
Step 03
Invoice at month end
Invoices generate and submit themselves.
JobsEarningsInvoices
#418
Sat · 10:00
Location A
Claim✓ Claimed
#419
Sat · 14:30
Location B
Open
#421
Sun · 09:00
Location C
Open
Sample data
8
contract photographers on one app
Weekly
production use by the team
React Native
Expo (Router, EAS Update)
TypeScript
Go
PostgreSQL
Stripe
Google Calendar API
AWS
TONI — 3D Scroll Site
A concept site for a matcha tonic brand: one real-time 3D can travels the whole page, and AI-generated video handles the liquid scenes.
A news product that reads 45 feeds plus Techmeme, Hacker News, GitHub and vendor pages six times a day, groups the same event across outlets, and ranks the day by what actually changes — not by how loudly it was covered.
www.sgnl.news
6×/day
collection runs, unattended, on a cron
45 → 12
RSS feeds read, stories in the daily issue
1.5s
mobile first paint in a throttled lab test, down from 2.2s
A web app for gym training: a plan from your answers, sets logged on the phone even without signal, the next session's weight and reps worked out by rule, and a coach who can read but not rewrite.
lifters.club
Every set
logged on the phone, even offline
Squat, set 240 kg × 9
lifters.club
On the phoneIndexedDB outbox
nothing waiting
online, all sent
/api/v1signed, same site, rate limitone gate
signed · same site · rate limit
SupabaseRLS enforced
Personal best: 40 kg × 9
582
exercises, each with a licensed motion clip
1,086
unit and component tests; 99.5% of lines in server and library code
An iOS app where contract photographers claim shoots, bill the customer's remaining balance, and send their month-end invoice. Every rule about money, hours and customer data is enforced by the same Go API the booking site uses.
Step 01
Claim a job
Open jobs appear in the app. One tap claims it.
Step 02
Track earnings
Pay is calculated per job, automatically.
Step 03
Invoice at month end
Invoices generate and submit themselves.
JobsEarningsInvoices
#418
Sat · 10:00
Location A
Claim✓ Claimed
#419
Sat · 14:30
Location B
Open
#421
Sun · 09:00
Location C
Open
Sample data
8
contract photographers on one app
Weekly
production use by the team
React Native
Expo (Router, EAS Update)
TypeScript
Go
PostgreSQL
Stripe
Google Calendar API
AWS
TONI — 3D Scroll Site
A concept site for a matcha tonic brand: one real-time 3D can travels the whole page, and AI-generated video handles the liquid scenes.
A news product that reads 45 feeds plus Techmeme, Hacker News, GitHub and vendor pages six times a day, groups the same event across outlets, and ranks the day by what actually changes — not by how loudly it was covered.
www.sgnl.news
6×/day
collection runs, unattended, on a cron
45 → 12
RSS feeds read, stories in the daily issue
1.5s
mobile first paint in a throttled lab test, down from 2.2s
A web app for gym training: a plan from your answers, sets logged on the phone even without signal, the next session's weight and reps worked out by rule, and a coach who can read but not rewrite.
lifters.club
Every set
logged on the phone, even offline
Squat, set 240 kg × 9
lifters.club
On the phoneIndexedDB outbox
nothing waiting
online, all sent
/api/v1signed, same site, rate limitone gate
signed · same site · rate limit
SupabaseRLS enforced
Personal best: 40 kg × 9
582
exercises, each with a licensed motion clip
1,086
unit and component tests; 99.5% of lines in server and library code
Every step of the booking funnel is instrumented — which is how it showed up that only 39% of visitors who picked a date went on to pick a time, and got fixed.
Instrumentation on every step of the booking funnel, from plan to deposit.
Session replay
Microsoft Clarity recordings show where customers stall, step by step.
Stripe payment events
30% deposit at booking, remaining balance collected automatically after the shoot.
Calendar sync
Photographer assignment kept in sync with Google Calendar.
Search Console
Branded searches bring nearly every click. Non-branded terms like “tokyo photo studio” sit around position 14 — the next thing to grow.
book.tettyphotostudio.com · web · last 3 months
Clicks
138
Impressions
910
CTR
15.2%
Top queries
Clicks
Position
tetty photo studio
41
4.2
tettyphotostudio
24
1.2
tokyo photo studio42 impressions · next to grow
1
14.2
AUDIENCE
Personal Brand — 0 to 30,000 Followers
Founder, creator, analyst.
I built a personal brand in the motivation, fitness, and self-growth space from zero. Multiple videos passed 1M views. By the summer of 2026 an ordinary reel was reaching fewer people than it had a year earlier, when the account was about a tenth of the size. The Instagram app shows insights per post but keeps no history, and the official API returns only the current cumulative value of each metric. There was no way to ask how a reel had grown, or to compare this month with last year on equal terms.
A private analytics dashboard for one account. It signs in through Meta's official Instagram login, reads media and insights from the Graph API on an hourly cron, and stores every reading as a timestamped snapshot in Postgres. It uses the official API only: no scraping, no password login. On top of the snapshots: a reel list and detail page with growth over time, manual tags with a top-against-bottom comparison, weekly and monthly trends, and a read-only JSON report of aggregates so the question "how is it going" does not need hand-written SQL.