Documentation
v1.0.3
iPhone · Android

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.

Four principles behind every decision

01

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.

02

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.

03

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.

04

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.

Powered by

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.

See the implementation