The situation
Zines is a quieter alternative to social feeds: every post is a small magazine of six pages and two covers that you can read like a booklet or print on one sheet of A4 and fold.
Doing that properly meant a page editor, a reader, comments and follows, notifications, an imposed print PDF, subscriptions and tips on two platforms, and infrastructure that could run unattended. I wanted to see how far one experienced engineer could take a product like that with AI agents doing most of the typing, without letting quality slip.
What I did
- Wrote a design spec and an implementation plan for each major feature, from the editor and media manager to push notifications and monetisation.
- Had AI agents carry out each plan task by task under strict test-driven development: a failing test before any implementation, with a per-task report showing the test going from red to green.
- Ran Cursor cloud agents in parallel on separate branches, reviewing every pull request and its evidence before merging.
- Kept one shared zine document model, so the web reader, the iOS app and the printable PDF all render exactly the same thing.
- Set up continuous deployment: every merge to main is tagged, tested, typechecked, run through end-to-end checks and deployed to AWS automatically.
- Changed the business model mid-flight, retiring paid print fulfilment for a Creator Press Pass subscription and reader tips, with Stripe on the web and StoreKit on iOS.
How it was built
An Astro and React web app and a Hono API, with about 96 routes, run on AWS Lambda behind CloudFront, with Postgres on RDS through Drizzle ORM. Uploads go straight to S3 and are processed by SQS-driven workers using sharp, and a second queue sends iOS push notifications through APNs.
The native app is SwiftUI, with offline caching and universal links. All the infrastructure is defined in SST, with dead-letter queues and CloudWatch alarms in production, deploys authenticated through GitHub OIDC, and a NAT instance in place of a managed NAT gateway to keep running costs down.
- Astro
- React
- TypeScript
- Hono
- SwiftUI
- PostgreSQL
- Drizzle ORM
- AWS Lambda
- Amazon S3
- Amazon SQS
- CloudFront
- SST
- Stripe
- StoreKit 2
- APNs
- Playwright
- Cursor agents
The result
One engineer, a team of agents, 85 production releases in four days.
Zines shipped as a complete product on web and iOS: about 70,000 lines of code, around 590 automated tests and 85 production releases in its busiest four days, from one engineer.
It is also a working example of the approach I bring to teams adopting AI. People own the specs, plans and reviews. Agents do the implementation under strict test-driven development, and nothing reaches production without passing the tests.