ChapterFlow
A Silicon X product for learning non-fiction books in short chapters, with spaced review.
A Silicon X product. SiliconX Software Solutions operates ChapterFlow at chapterflow.ca.

Layers involved: Cloud and platform, Back end and APIs, Web apps, Design and UX and AI and data
Built with: Next.js, React 19, TypeScript, Tailwind CSS 4, AWS (DynamoDB, S3, Lambda, Cognito, SES, SSM), Stripe, AWS CDK
chapterflow.caSource on GitHub
What it does
ChapterFlow turns non-fiction books into short chapters. Each chapter takes about 12 minutes and runs the same four-step loop: a summary, examples, a quiz, then spaced review that brings it back days later.
The library has over 130 books. There are two plans, Free and Pro, billed through Stripe. Free needs no card and lets a reader finish up to two books. Pro adds unlimited books, a deeper depth mode, text-to-speech audio and reading analytics.
Readers can export their progress and notes as JSON, CSV or Markdown, and delete their account at any time. Deleting an account also cancels any subscription.
It runs in any browser, on any device. A native iOS app is on the roadmap.
How it works
The web app is built with Next.js (App Router), React 19, TypeScript and Tailwind CSS 4.
It runs on AWS: DynamoDB, S3, Lambda and SSM, with the infrastructure defined in the AWS CDK.
Sign-in uses Amazon Cognito. Transactional email goes through Amazon SES. Usage analytics is off by default.
Stripe handles billing. ChapterFlow stores the Stripe customer ID and subscription status, and never sees or stores card numbers.
Spaced review is scheduled with FSRS-5, an open-source spaced-repetition scheduler.
There are three environments, dev, staging and prod, in one AWS account. A push to main deploys dev automatically. Staging and prod are deployed manually, and prod needs an approval.
Where AI is used
When a reader submits a scenario of their own, the text is sent to Anthropic’s API for an automated quality and safety review before it can be published. This is the AI step ChapterFlow’s privacy policy describes.
ChapterFlow’s privacy policyThe iOS app
A native iOS app is in development in a public repository: SwiftUI, Swift 6, iOS 18 and later, split into modular Swift packages. It is not yet on TestFlight or the App Store.
Decisions and tradeoffs
Stripe holds the card data
Billing runs entirely through Stripe. ChapterFlow keeps a customer ID and a subscription status, so card numbers never reach its own systems. The cost is depending on one payment provider.
Web first, native on the roadmap
One web app serves every device today, with nothing to install. The native iOS app is built in its own repository and is not released yet, so readers on phones use the browser for now.
An open-source scheduler
Spaced review uses FSRS-5, an open-source scheduler, instead of rules invented in-house. Anyone can read how it decides when a review is due.
Three environments, one account
Dev, staging and prod share one AWS account. That keeps the setup small; separate accounts would isolate them more strongly. Prod still needs an approval to deploy.
Readers keep control of their data
Progress and notes export as JSON, CSV or Markdown, and deleting an account also cancels the subscription. Usage analytics is off by default.
Security
- Sign-in through Amazon Cognito.
- Card numbers never touch ChapterFlow. Stripe holds them.
- Scenario text that readers submit gets an automated quality and safety review before it can be published.
- Prod deploys need an approval.
- Usage analytics is off by default.
- Readers can export their data and delete their account at any time.
What can go wrong
- Sign-in depends on Cognito and billing on Stripe. If either has an outage, sign-ins or upgrades wait until it clears.
- Dev, staging and prod share one AWS account, so an account-wide mistake can reach all three.
- Scenario review is automated. It can let something through, or hold back something that was fine.
- The native app is not released, so readers on phones depend on the browser.
Next step
See it live at chapterflow.ca. To build something like it, start a project.
Next case study: Serverless file converter