Skip to content

A one-person studio

I build apps by vibe coding.

Vibing Legends is a one-person software studio. AI writes the first draft, I read every diff, and tests hold the whole thing down. These are the apps that came out of it.

shipped PF1e Campaigner · Poppem! · PF1e Combat Tracker

  • Next.js
  • React
  • TypeScript
  • Tailwind
  • Supabase
  • Postgres
  • Clerk
  • Swift
  • iOS
  • Capacitor
  • Vite
  • Python
  • Claude
  • Playwright
  • Vercel
  • Fly.io
  • Resend

The apps

What's in production.

Three live — two for the Pathfinder table, one for the minute you step away from it — and a fourth on the way.

The PF1e Campaigner landing page: a hero over an open spellbook, with the Pathfinder 1st Edition tagline and a row of the 19 source books it draws from.

Web app · Rules engine

PF1e Campaigner

A character builder and campaign manager for Pathfinder 1st Edition. Every derived stat shows its work, and the whole table shares live combat, treasure, a session scheduler and homebrew.

source books
19source books
pages curated
5,609pages curated
spells
1,800+spells
feats
1,270+feats
Visit PF1e Campaigner(opens in a new tab)

stackNext.js, React, TypeScript, Tailwind, Supabase, Postgres, Clerk

iOS game · Party mode

Poppem!Personal project

The founder's own side project rather than studio work — but it's the first app from here on the App Store, and it opens the door to iOS for Vibing Legends.

Poppem! on the App Store(opens in a new tab)

Pop only the colour that's called. One wrong balloon and the run is over.

Sixty seconds, a sky full of balloons, and a combo that multiplies every pop for as long as you keep it clean. The called colour is never the only one up there, and the faster you go the more the wrong ones look like the right one.

Party Pop! puts two to four phones in the same sky — a colour and a corner each. Pop your own to score, pop somebody else's to take it off them. One player reads out a four-character code, the others type it in, and you're playing.

Ranks unlock new skies, trails and balloon shapes. Every shop upgrade can be earned by beating its trial, so buying is a shortcut and never the only route. No adverts, no tracking, no accounts — sign in to Game Center for the global boards, or don't, and the game keeps your scores for you either way.

one run
60sone run
phones in a party
2–4phones in a party
ranks to climb
14ranks to climb
upgrades, all earnable
13upgrades, all earnable
  • A Poppem! run in progress: “Pop only Red” in the corner, a score of 6 with 46 seconds left, and a sky crowded with red, blue, orange, green, pink and yellow balloons as an arrow flies up through them.
    A run in progress
  • The Poppem! title screen: the name over a bunch of balloons, a level 7 Bubble Buster rank card, and buttons for Solo Pop!, Party Pop!, Leaderboard, Customise and Your progress.
    The title screen
  • The Leaderboard panel: a Game Center sign-in prompt, the all-time most-popped leader, and today's boards for each of the eight colours.
    Today's boards
  • The Your progress panel: today's challenge, Score 34 on Blue at 21 of 34, a six-day streak, best combo and weekly pops, and a personal best per colour.
    Progress and bests
  • The Run over panel after a wrong pop: “Out!” over a score of 1, the line “A white balloon ended the run”, the rank progress bar, and Try again and Title buttons.
    The end of a run

stackReact, TypeScript, Vite, Tailwind, Capacitor, Swift, StoreKit, Game Center, a Node relay

Web app · DM tool

PF1e Combat TrackerFree

Visit PF1e Combat Tracker(opens in a new tab)

An initiative tracker built for the DM's side of the screen. Save the party, prep encounters, quick-add from a 1,798-creature bestiary, then run initiative, hit points and conditions at the table while players follow along on their own phones through a read-only QR link. Every feature is free.

bestiary creatures
1,798bestiary creatures
buff & condition presets
116buff & condition presets
every feature
Freeevery feature
to the live player view
1 tapto the live player view
The PF1e Combat Tracker landing page: the headline “Run combat. Not spreadsheets.” over dragon-hoard art, a grid of seven feature cards, a three-step guide to running a fight, and a pricing panel reading Free.

stackNext.js, React, TypeScript, Tailwind, Supabase, Clerk, zod

Web app · In development

Chronicles of ThalorIn development

Not released yet. This is the next studio app — PF1e Campaigner and an adventure builder folded into one — and it will launch at chroniclesofthalor.com when it's ready.

Visit Chronicles of Thalor(opens in a new tab)

A world you design campaigns in and then play them from start to finish — Pathfinder 1st Edition rules, one hand-crafted setting, built for a real table with dice on it. Not a virtual tabletop.

It merges two apps into one. The adventure builder takes a GM from an idea to a printable module: an arc, adventures on an XP ladder, encounters costed against the party, treasure against wealth by level, NPCs built by the real character generator. PF1e Campaigner takes the table from there — characters, live combat, party state, realtime sync. The gap between the two, where a GM used to re-type encounters by hand, is the product.

Three doors: Create a campaign, Run one tonight, or Play your seat. Players roll a Thalor character and see what the GM reveals, and can never read the module. Three seed campaigns ship with it, set in a world four-fifths ocean under three moons locked in resonance.

doors: Create, Run, Play
3doors: Create, Run, Play
source books
19source books
seed campaigns, 14 adventures
3seed campaigns, 14 adventures
gods in the rules engine
12gods in the rules engine
The teaser

stackNext.js, React, TypeScript, Tailwind, Supabase, Postgres, Clerk, Turborepo, Claude

How it's built

A few of the decisions.

The parts worth a paragraph each. The rest is in the apps.

Content as data, not code

The 19 source books are curated into catalogs that live outside the app logic and are validated on every build. Adding a feat is a data change, not an engine change.

Every number shows its work

Each AC, save, skill and attack total expands into a ledger of what moved it. That constraint shaped the data model far more than the UI.

The second app came out of the first

PF1e Combat Tracker is the campaign manager's combat feature lifted out and slimmed down — same rules maths, a fraction of the surface, a few weeks rather than a second year.

A web game, shipped native

Poppem! is a canvas game wrapped in Capacitor, with a little Swift for Game Center and StoreKit. In a party one phone runs the simulation and ships a snapshot of the sky twenty times a second; the others draw it and send their taps back.

Approach

Vibe coding, minus the hand-waving.

The pace of conversation, not the pace of tickets. It does not mean shipping whatever the model produced.

AI writes the draft

Most first drafts are generated. The speed comes from not typing out code that was never in question.

I read every diff

Nothing lands unreviewed. Architecture, data model and the hard trade-offs are decided deliberately.

Tests hold it down

Types, unit tests, end-to-end coverage and CI on every commit. The boring parts are what make the quick parts safe.

Questions

The ones you're already thinking.

What does “vibe coding” actually mean here?

Working at the pace of conversation rather than the pace of tickets, with AI writing a lot of the first draft. I review every diff and own the architecture — the speed comes from removing the typing, not the thinking.

Doesn't that produce fragile code?

It does if you stop there. The counterweight is deliberately boring: types, unit tests, end-to-end tests and CI on everything. A rules engine is either correct or it's worthless, so it gets held to that.

Is Poppem! a Vibing Legends app?

Not quite — it's the founder's personal project, built the same way but outside the studio's Pathfinder work. It is the first app from here on the App Store, though, since September 2026, and iOS is now somewhere the studio can go.

What's Chronicles of Thalor?

The next studio app, and still in development. It folds PF1e Campaigner and an adventure builder into one thing — design a campaign, run it, play it — set in a single hand-made world. It's listed here because it's real and being built, not because it's ready; it will say so on this page when it is.

Why is the combat tracker free?

Because feedback from real DMs is worth more to it right now than a few pounds a month. It's “free until it's worth paying for”, with plenty of notice promised before that changes.

Are you taking on work?

This site exists to show what's been built rather than to sell anything. If it's relevant to something you're working on, send an email — always happy to talk.

Get in touch

Curious how it was built?

Happy to talk through any of the apps, the tooling, or the way of working behind them.

hello@vibinglegends.com