The Infra of Anchorline
Notes on the infrastructure choices behind the app
Anchorline is a personal system for tracking things (home inventory and book tracking are popular use cases right now) that tend to sprawl across spreadsheets and disconnected apps. Since it handles user data that people expect to be correct and available, the infrastructure needs to be stable, secure, and predictable.
Coming out of the public launch I thought it would be interesting to do a quick overview of the infrastructure choices behind Anchorline and why they were made.
Backend Services
First and foremost the Api for Anchorline and the databases are all hosted on Fly.io servers. When deciding on the backend hosting provider managed Postgres mattered, but the bigger win is how little attention Fly needs once it’s set up.
The API is written in Bun using Hono and personally I’ve found that this setup is fast and simple. Startup times are low, request handling is efficient, and the framework does not add much overhead. There is very little abstraction between the app and the platform, which keeps things easy to reason about.
Frontend Services
The frontend client is built with Next.js and hosted on Vercel.
This is my first production app deployed on Vercel and it has been smooth so far. Setting up dev, QA, and prod environments was painless. Preview deployments work out of the box, and promoting changes through environments is straightforward.
Since Vercel builds and maintains Next.js, the integration feels natural and avoids a lot of custom deployment work.
Cloudflare
The main anchorline.io site is hosted on Cloudflare and I rely on it heavily for security. Bot Fight Mode and Zero Trust handle most of the protection, and Cloudflare Access sits between the app and the API to add an extra layer of control. Edge caching is a nice bonus.
Managed Services
In addition to hosting, Anchorline relies on a number of managed services:
Stripe for billing
Umami for analytics
Sentry for error tracking
BetterStack for status monitoring, with a possible move to OpenStatus later
Google Workspace and Resend for email delivery
GitHub for private repositories
None of these choices are exotic, and that’s intentional.
It takes a fair amount of work to put together an app that is stable, performant, and scalable, but the payoff is that things mostly just work. When it comes to infrastructure, I strongly prefer boring, and this setup has been boring in exactly the right ways so far.


