Web app · September 2025 – now · Solo
KnowTarot
A free tarot reading and learning app. Readers shuffle a classic deck, lay out a spread and get a reading written for every card in every position, then keep a journal, learn the cards and come back each day.
- Role
- Everything: product, design, code, operations
- Stack
- Next.js 15, React 19, TypeScript, Tailwind
- Backend
- Supabase (Postgres, row-level security, storage, pg_cron), Stripe
- Hosting
- Vercel, GitHub Actions CI
- 32data-driven spreads
- 14lessons in a free course
- 253commits, one developer
- 100Lighthouse accessibility and SEO (mobile)
The problem
Most tarot sites give you a card and a one-line keyword. Readers who want to understand a spread, or learn to read without a book open, have to piece it together themselves. I wanted one place to read, learn and keep a record, that works on a phone with no signal and asks for no account until there is something worth saving.
What I built
- Readings. 32 spreads defined as data, so a new spread needs a layout and a guide but no new card text. A spread finder suggests spreads from the question you type. Cards are dealt, or chosen from a fan, or entered from your own physical deck.
- A reading as a whole. A rule-based synthesis engine reads the spread together: suits, majors, reversals, repeated ranks, card pairings and how positions relate.
- Learning. Flashcards with Leitner spaced repetition, generated quizzes, practice readings and a 14-lesson course, with progress that syncs between devices.
- Journal. Saved readings with notes, moods, tags, look-backs ("did it come true?"), statistics, a practice calendar and CSV/PDF export with full backup and restore.
- Sharing. Share links with privacy toggles, 1080×1920 story images, a canvas video maker for TikTok and Reels, two-person compatibility readings and pages for tarot creators, with moderation.
- Platform. Installable and offline, with a queued outbox that syncs saved readings when the connection returns, push reminders that work without an account, a calendar feed, a Spanish edition and an embeddable widget. Stripe subscriptions are built and in test mode ahead of launch.
Hard parts
- Offline writes. Every save goes through an outbox that sends at once or queues in the browser, merges edits to the same reading, and treats a lost reply to an insert as done, so nothing is saved twice or lost.
- Abuse without accounts. Anonymous features (compatibility links, feedback, creator inboxes) are rate-limited per connection by database triggers, with site-wide caps behind them.
- Speed on phones. The 260 KB database library never loads on first paint; card images are served from pre-made sizes, which also keeps the image optimiser inside the free plan.
- Quality. A 41-file browser test suite runs against production data with cleanup, plus axe-core accessibility checks on about 40 pages in light and dark, on desktop and phone.
Outcome
KnowTarot is live with real visitors, measured with cookieless analytics and anonymous return figures. Mobile Lighthouse on production scores 86 to 95 for speed and 100 for accessibility and SEO. Paid plans are ready to switch on.