Skip to content

Tech Stack

LayerTechnologyPurpose
RuntimeCloudflare Workers (via Astro @astrojs/cloudflare)Serverless edge execution
FrameworkAstro 6 + Preact (islands)Full-stack web framework
CSSTailwind CSS 4Utility-first styling
DatabasePostgreSQL (Neon serverless)Primary data store
ORMDrizzleType-safe SQL
AuthLucia (two instances: buyer + admin)Session management
SchemasZod 4 (src/schemas/)Runtime type validation
Frontend (buyer)HugoStatic site generation
IconsMaterial SymbolsUI iconography
ServiceUsage
WorkersApplication runtime (Astro SSR)
PagesStatic asset hosting + Hugo buyer sites
D1 / Durable ObjectsWebhook processing queue
R2Image/document storage
Email ServiceEmail delivery (OTP codes, contact form, invites)
Access (Zero Trust)Operator authentication
Custom HostnamesPer-project custom domains
ToolLocationUsage
Zod schemassrc/schemas/Shared type definitions validated at the API boundary
Typed API clientsrc/lib/api-client.tsZod-validated api.get/post/patch/put/delete helpers
Zod body validationsrc/pages/api/**/*.tsPer-endpoint request validation
CSRF protectionsrc/lib/http/csrf.tsOrigin/referer validation for mutating endpoints
ComponentDeployment
Platform (Astro)Cloudflare Pages via platform/ directory
Buyer Frontend (Hugo)Cloudflare Pages via buyer/portal-hugo/ directory
Database Migrationsdrizzle-kit push (dev), drizzle-kit migrate (prod)