Substack2EPUB came from a simple need: reading my Substack newsletters as actual books on my e-reader, without depending on the app or my inbox. I built a Node/TypeScript API with Fastify that automatically imports the newsletters an account already follows on Substack, through a passwordless auth flow (Substack itself emails the sign-in link, which the API exchanges for a JWT). From the feed, users select posts and convert them into EPUBs, including merging several posts into a single book, using Playwright to render the original content and an async export queue to handle the conversion. The dashboard is built with React, Vite, and Tailwind, with TanStack Query managing server-state caching. I wrote the test suite with Vitest (67 tests, 100% passing) covering everything from authentication to EPUB generation, and documented the full architecture to make future contributions easier.
← Back to portfolio$Substack2EPUB
NodeTypeScriptFastifyReactPostgreSQLViteTailwindPlaywright