How we
built Prysm
A game backlog tracker you fill from TikTok, YouTube and Steam. Every screen, the backend behind it, and the decisions we made along the way.
The app
Every screen and every interaction: the library, sharing from TikTok, imports, the roll, achievements, the feed and the paywall, with what we built and why.




The stack
Supabase and the data model, search, imports, push, payments with RevenueCat, security and deletion. Everything that keeps the app running.
Four principles behind every decision
The app never holds a secret
Every call to IGDB, Steam, Xbox, PlayStation or the language model goes through an edge function. IGDB refuses calls from apps outright, and a key inside an app bundle is a key anyone can extract.
The database enforces the rules
Row-level security means the app only ever sees your rows. The 50-game cap is a trigger, and who is Pro comes from RevenueCat's webhook, so a modified app cannot grant itself anything.
The catalog is local
About 90,000 games are seeded from IGDB into Prysm's own Postgres ahead of time. A search is one database query, fast, and still working when IGDB is slow.
Slow work runs on a schedule
Push delivery, release-day alerts and language-model calls run as sweeps, never inside your tap. Liking a post never waits on a third party being up.
RevenueCat
Prysm Pro, the lifetime purchase and the ads all run through RevenueCat. It makes the purchase, grants the Pro entitlement, tells our backend through a webhook, verifies the rewarded roll and puts ad revenue next to subscriptions, so we could build the app instead of billing.