About the build
AbyssPrints is a real small-business site and a full-stack personal project. This page is for anyone curious how it is put together.
Stack
Next.js 16 App Router, React 19, TypeScript, Tailwind CSS v4, Drizzle ORM with Neon Postgres, AWS S3 for uploads and order artefacts, Stripe Checkout + webhooks, Resend for transactional and inbound email, NextAuth for admin access.
Two business flows, one admin
Custom quote orders (file upload + email quote) and in-stock shop checkout share a unified admin console. Orders are stored in S3 with optional Postgres metadata mirroring and a backfill path for migration.
Email as workflow
Outbound templates cover confirmations, quotes, and payment instructions. Inbound customer replies arrive via Resend webhooks and are threaded into the order record so admin replies stay in context.
Checkout integrity
Shop cart lines are resolved server-side against the catalog before payment. Verification scripts guard pricing rules for custom bases and cart resolution.
Security
Presigned uploads with magic-byte validation, rate-limited admin login and uploads, CSP and security headers, and robots exclusion for admin routes.