The ABCD System: An Edge-Native Product Delivery Engine

Published: · 4 min read

Astro. Better Auth. Cloudflare. Drizzle. A strict, opinionated full-stack architecture for Technical Program Managers who ship — and anyone tired of DevOps being a separate job description.

Heraldic coats of arms for the ABCD System — Astro, Better Auth, Cloudflare, and Drizzle

This is not a starter kit. This is an operational system.

I built the ABCD System because I needed a strict, repeatable architecture for shipping edge-native products without the overhead of managing infrastructure, arguing about tooling, or paying vendor lock-in taxes that compound over time. It’s designed for Product Managers who code, Technical Program Managers who ship, and anyone who has lost a Saturday debugging hydration errors.

The name is the acronym: Astro. Better Auth. Cloudflare. Drizzle. Four components, each chosen for a specific operational reason, each replaceable if something better appears — but together forming a supply chain from idea to globally-deployed product with zero cold starts and a $0/month starting cost.

Architecture diagram showing the ABCD System: Astro and Better Auth on the build side, Cloudflare Pages, Workers, R2, and D1 on the edge side, with Drizzle ORM bridging typed queries to D1


The Operations Manifesto

As a Product Manager, my job is to remove friction between “idea” and “user.” As a Technical Operations practitioner, my job is to ensure the idea doesn’t bankrupt us in hosting fees or technical debt.

This system enforces what I think of as a farm-to-table supply chain:

The Farm (Context): Requirements harvested from Asana and Obsidian. Structured, prioritized, traceable. Nothing enters the kitchen without a ticket.

The Kitchen (Production): Code built in Astro with Tailwind v4. Zero-JS by default. When client-side interactivity is needed, Astro’s island architecture lets you use React, Svelte, or Vue — but only where those frameworks earn their weight.

The Table (Delivery): Served globally via Cloudflare Workers on V8 isolates at 300+ edge locations. Zero cold starts. The user gets the product, not a loading spinner.

“The more simple anything is, the less liable it is to be disordered.” — Thomas Paine


The Infrastructure Strategy

Each component was selected to minimize what I call “administrative overhead” — the tax you pay not in dollars but in debugging sessions, vendor dashboards, and configuration files that exist only to make other configuration files work.

Astro — The Framework

Zero-JS default means pages ship as HTML. No hydration errors on weekends. For content-driven products and tools where most pages are read-heavy, this eliminates an entire category of performance and debugging problems. When client interactivity is needed, Astro’s island architecture scopes it precisely — you pay for JavaScript only where you use it.

Next.js is excellent but carries Node.js assumptions that conflict with edge deployment. SvelteKit is strong, but Astro’s content-first model fits the majority of what I build.

Better Auth — The Identity Layer

TypeScript-native. Self-hosted. Stores auth data in your own database via Drizzle. No vendor lock-in, no per-MAU pricing cliffs, no data leaving your infrastructure.

For products where you control the data layer, third-party auth services like Clerk or Auth0 are a convenience tax with compounding costs. Better Auth removes the intermediary.

Cloudflare — The Network

Workers run on V8 isolates at 300+ edge locations with zero cold starts. The free tier is generous enough for production use. D1 (SQLite at the edge) eliminates the need for a separate database provider for most applications. R2 handles object storage. Vectorize handles embeddings. Pages handles static deployment. One vendor, one dashboard, one bill.

AWS is powerful but the operational overhead — IAM policies, CloudFormation, billing surprises — is a tax I refuse to pay for small-to-medium products. Vercel is good but optimized for Next.js.

Drizzle — The Data Layer

Drizzle generates raw SQL and runs anywhere — including edge runtimes where Prisma’s query engine can’t operate. The TypeScript-first schema definition means the database schema is the type system. No separate SDL, no code generation step, no runtime binary.


The Supporting Cast

The core four handle structure, identity, network, and data. These handle everything else:

RoleToolWhy
ValidationValibot (+ Zod)Valibot at ~10% of Zod’s bundle size for edge contexts. Zod for general validation. Both enforce type safety at runtime boundaries.
GovernanceBiomeRust-based linter and formatter. One tool replaces ESLint + Prettier. It fixes the code so nobody has to argue about it.
Dead CodeKnipDetects unused exports, components, dependencies. If it’s not shipping, it gets deleted.
DependenciesRenovateAutomated PRs for dependency updates. Repos don’t rot.

The Architecture Rules

This system is opinionated. That’s the point.

Server-first rendering. Every page is server-rendered or static unless client interactivity is explicitly required. output: "server" with the Cloudflare adapter. Client JavaScript must justify its existence.

Edge-native data. D1 for structured data. R2 for blobs. Vectorize for embeddings. No external database providers unless the use case genuinely can’t be served at the edge.

Auth in the data layer. Better Auth stores sessions and users in D1 via Drizzle. Auth state lives in the same database as application state. No separate auth service, no token relay, no CORS gymnastics.

Type safety at every boundary. Drizzle schema generates TypeScript types for the database. Valibot/Zod validates at API boundaries. Astro’s content collections validate at the content layer. If data crosses a boundary, it gets validated.

Single-command deploy. git push triggers Cloudflare Pages build. No build scripts, no deployment pipelines to maintain, no SSH.


What This Produces

The ABCD System is the engine. The projects are the vehicles:

  • jimvinson.com — This portfolio site. Astro + Cloudflare Pages + Sanity CMS.
  • Lily-Livered — A one-page logo site template for email-only domains. Astro + Cloudflare Pages.
  • PHINEAS — An ESL assessment engine using a 6-step state machine for deterministic LLM compliance.
  • The Permanent Record — A serverless RAG system on Cloudflare Vectorize + D1.

Every project starts from the same scaffold. Every project inherits the same opinions. The consistency is the feature.


The Repo

The ABCD System scaffold is available on GitHub:

github.com/vinsonconsulting/abcd-system

Clone it, edit the config, push to Cloudflare. You’ll have an authenticated, edge-deployed application running globally before you finish reading the README.

“I have the simplest tastes. I am always satisfied with the best.” — Oscar Wilde

Latest articles

Read all my blog posts

· 8 min read

The AI Peer Review System: A Multi-Agent 360-Degree Performance Assessment

When your primary coworkers are AI systems, who writes your performance review? I built a structured evaluation framework where two competing LLMs acted as senior colleagues, graded my work against a rigorous rubric, and debated the results in real time.

Antique desk covered in grade sheets, ledgers, and assessment documents under warm chiaroscuro lighting

· 4 min read

The ABCD System: An Edge-Native Product Delivery Engine

Astro. Better Auth. Cloudflare. Drizzle. A strict, opinionated full-stack architecture for Technical Program Managers who ship — and anyone tired of DevOps being a separate job description.

Heraldic coats of arms for the ABCD System — Astro, Better Auth, Cloudflare, and Drizzle