-
-
Home screen - Big, beautiful cover art for the books you are reading and quick access to Up Next and your yearly reading challenge.
-
Library View - Worlds tab - Shows all of the worlds your books are a part of
-
Discover - Discover books across more than 52 subgenres. Tailored to your library and ratings.
-
Book Detail View - Link to the Series, Update Progress, add notes, read the synopsis, etc.
-
Series View - A true differentiator with a dedicated place to show the series and its reading order
-
Series View - Reading order showcased
-
Reading Challenge - An element of delight here in the background is meant to evoke a candlelit library
-
Sage Reading Companion - Snapshot of Sage answering a user question. Sage has access to your library and can make recommendations.
-
Dedicated Up Next list - separate from your TBR (Want To Read) list to make it easy to focus on the next set of books.
-
iOS App Icon
-
Curated awards list for the top fantasy, sci-fi, and horror awards.
-
Reading stats - Pro unlocked version
-
Taste Test - An interactive way to decide what genres you are interested in
Inspiration
I've always tracked what I read in a spreadsheet, then Goodreads, and neither ever felt right for how I actually read. Fantasy and sci-fi have deep series, deep universes, and jumping between the books can be disorienting. I wanted something built specifically for genre readers, that felt as considered and a little magical as the books themselves instead of a database with a UI bolted on.
What it does
Saga Reads is a personal book companion and tracker for fantasy and sci-fi readers. It tracks your library with real series and universe structure (not just flat lists), imports your existing Goodreads history, and turns reading into something with a bit of momentum — reading challenges, an activity feed, and a discover experience tuned to all of the subgenres within fantasy, sci-fi, and horror. Sage, an AI reading assistant, helps you find what to read next and answers questions about your library and the books in it.
How we built it
Web is Next.js 16 (App Router) and React 19, mobile is Expo/React Native, both backed by Supabase. Sage runs on Claude. The whole visual language is generated from a single OKLCH color token set so the app stays consistent between its dark (default) and light themes across both platforms. Under the hood, the catalog itself — books, editions, series, authors — is built from ISFDB data, matched and de-duplicated so that "the same book" reliably resolves to one entry no matter which edition or import brought it in. New releases are captured directly from ISBNdb and a variety of sources are used to round out missing metadata.
Challenges we ran into
Getting a bibliographic catalog to behave: the same novel shows up under dozens of editions, ISBNs, and reprint titles, and matching those together correctly (without incorrectly merging different books) took real iteration. Enabling a Discovery experience that felt unique to each user's library took me down a road I haven't traveled before. I had to learn about embeddings and vector similarity, and how to turn a shelf of books into a taste profile that actually means something — then balance it against things like popularity and what you already own, so recommendations feel personal instead of either too obvious or too random. Bringing the same design system to both a web app and a native mobile app without it feeling like two different products was its own project. And wiring up subscriptions and entitlements so Pro features gate correctly everywhere, then getting through App Store review, took real care.
Accomplishments that we're proud of
Getting Pro monetization live and approved on the App Store. Building a catalog matching system solid enough to trust against a real, messy bibliographic dataset. And shipping a design system — colors, motion, haptics, the badge coins, the atmospheric touches — that actually feels cohesive across dark/light and web/mobile rather than assembled from defaults.
What we learned
Data quality work (deduplication, matching, catalog hygiene) is unglamorous but is what everything else stands on. That the small, quiet details — a haptic tick when you rate a book, motes of light drifting in the background, a number counting up instead of just appearing — do more for how an app feels than any single big feature.
What's next for Saga Reads
Public profiles so readers can share libraries and progress, deeper universe reading-order support, and continuing to round out Sage's ability to actually help you navigate a big personal library — not just chat about it. Sub-genre dedicated pages. Email engagement loop is currently WIP as well as more robust notifications (there are a couple today). As more users use Saga the discovery engine will also be tuned accordingly.
Built With
- claude
- expo.io
- next.js
- react
- react-native
- supabase
- vercel
Log in or sign up for Devpost to join the conversation.