CharTaker

A Starfinder character manager that carries a player from a guided build through live play, starships, and shared campaigns. Built solo and shipped to the App Store.

ReactViteCapacitorSupabaseTTRPGiOSAndroid
CharTaker screenshot

Overview

I play Starfinder weekly with a local group, and none of the existing character tools felt right. They were clunky, overwhelming for a new player, and none of them were really built for Starfinder. So I built CharTaker to be the tool I wished existed: gentle enough to onboard someone who has never opened a rulebook, and fast enough that a veteran can run their whole table from a phone.

What started as "a cleaner character sheet" grew into the thing I have spent the most time on. It now covers the full arc of a campaign, from rolling up a character to running live combat, flying starships, and sharing a session with the rest of the table in real time. It is on the App Store, and it is the project I am proudest of.

Build a character without reading the rulebook

The hardest moment in any tabletop game is the first one: a blank sheet and four hundred pages of rules. CharTaker turns that into a guided wizard. You pick an ancestry, a class, and a theme, and the app does the rulebook lookups for you, surfacing only the choices that actually apply at your level. Skill ranks, class features, and feats each get their own browsable, searchable picker, with the mechanical effects written in plain language instead of cross-references.

Leveling works the same way. A level-up wizard walks you through exactly what changes at the next tier and applies it to the sheet, so growing a character never means re-reading the chapter you read six weeks ago.

A full character sheet: stats, skills, class features, and equipment in one scrollable view.

Run the table, live

Once play starts, the sheet becomes a control surface. Combat tracks stamina, hit points, and shields separately the way Starfinder actually works, applies and clears conditions, and handles rests without math. A built-in dice roller resolves attacks and checks in place, and a dedicated critical-hit flow makes the best moment at the table feel like one instead of a footnote.

The critical-hit flow firing during a live combat roll.

The Starfinder parts other tools forget

This is where building specifically for one system paid off. Starfinder has two whole subsystems that generic character trackers ignore, so CharTaker treats them as first-class:

  • Starships. A full ship view for the vessel the party shares, with its own vitality and combat-relevant stats, edited the same clean way as a character.
  • Drones. The mechanic's drone is its own managed companion rather than a note scribbled in the margin.

Campaigns and shared sessions

CharTaker reaches past the single player. A campaign holds its encounters, session notes, and the conditions in play, so the GM has somewhere to run from. And because the backend is real, a GM can open a live session and have players join it from their own phones, with the table's state synced between everyone in real time. The solo character app quietly became a multiplayer one.

Bring the character you already have

New tools die on the migration problem: nobody wants to retype a character they have already built somewhere else. CharTaker ships an importer for Hephaistos, a popular Starfinder builder, so existing players can pull a character in and keep playing instead of starting over. It is a small feature that does a lot of the work of getting a real group to switch.

Built to ship

Under the surface, CharTaker is a React 19 and Vite single-page app styled with Tailwind, wrapped by Capacitor into the native iOS and Android builds that put it on the App Store and Google Play from the same codebase as the web build linked above. Supabase provides auth, the Postgres database, and the realtime layer behind shared sessions.

The interesting engineering is in the data. The full equipment, spell, feat, class, and ancestry rules are modeled as structured data the app reasons over, and the big browsers (the shop and the spell list) are virtualized with TanStack Virtual so thousands of items scroll smoothly on a phone. Character, campaign, and ship state each run through reducers covered by a Vitest suite, and product analytics run through PostHog behind a proper consent banner. It is at version 1.3.x because it is a real app with real users, and it keeps shipping.

A free usability lab, every week

For about two months I ran my weekly game entirely on CharTaker, in front of the same four people. That turned my Starfinder group into a standing test session with users who had no reason whatsoever to be polite to me.

The feedback was brutal in the way only good friends manage, and it is the single reason the app is any good. Things that read fine on my laptop fell apart at a real table, where someone is mid-turn, everyone is talking, and nobody wants to hunt for a button. You cannot get that from a spec.

If I am honest about my own failure mode: I did not say no often enough. When four people you like are handing you ideas every week, the pull to build all of them is strong, and some of what went in was there because a friend asked rather than because the app needed it. Knowing the difference is a skill I am still working on.

What I got wrong going in

TTRPGs are fiddly in a way that is hard to appreciate until you try to model one. Hundreds of rules, class features that interact, house rules every table applies differently, and a long tail of edge cases that each feel small and collectively are most of the work. That part I expected, roughly.

The miscalculation was the audience. I built for Starfinder first edition, betting the player base was well established and that community APIs would carry some of the data burden. Starfinder 2 has since arrived, the first edition audience is smaller than I counted on, and the community tooling I hoped to lean on was thinner than advertised. I knew the risk going in and took it anyway.

In hindsight it was a poor choice for the app I wanted to put on the App Store, and it was an excellent choice for the app I wanted to build, because I actually play it. If the goal had been downloads I picked wrong. If the goal was shipping something real to a store and learning every part of that pipeline, it worked exactly as intended.

My role

Everything. Concept, product and UX design, the data modeling of the game rules, the full-stack build on Supabase, and the release to the App Store. CharTaker is the clearest single answer to "still shipping the software myself."

Live demo