Back to work

2026 · Engineering

Black Fox

Production-grade Next.js app + CMS for a craft-lemonade brand

Black Fox
Year
2026
Role
Engineering
Stack
Next.js 16 · React 19 · TypeScript · Tailwind v4 · next-intl · Server Actions · Server Components · Drizzle ORM · Postgres · Neon · next-auth · Resend · Vercel Blob · Sharp · ExcelJS · bcrypt

Context

Ukrainian craft-lemonade brand. Production site with brand story, full product assortment and contact funnel, plus a separate admin section with complete content / product / image / settings / user management — the team can edit every visible thing on the site without touching code. Design came from the client side; frontend, backend, database and admin all came out of one set of hands.

Task

Take a finished design and ship a production stack — Next.js 16, Drizzle, Postgres, next-auth, Resend, Vercel Blob — so a non-technical owner can manage products, content and imagery on the live site without developer involvement. Keep the storefront fast, multilingual and SEO-clean while the admin layer holds the entire CMS surface behind it.

Engineered

Next.js 16 + React 19 + TypeScript App Router with server components and server actions, Tailwind v4, next-intl for UA/EN. Backend in the same Next app — Drizzle ORM with a typed schema for site content / products / users / images / signatures, Postgres on Neon, drizzle-kit migrations + seeders for prod and dev. next-auth (beta v5) with bcrypt password hashing for admin login. Resend for transactional email from the contact form. Vercel Blob with Sharp-driven WebP optimisation for editor-uploaded imagery. ExcelJS for product-list exports. Admin section behind an obscured URL with a full CMS surface: content editing, image registry, products CRUD, signature / footer settings, user management. Every system layer hand-built.

Black Fox — 1
Black Fox — 2
Black Fox — 3
Black Fox — 4
Black Fox — 5
Black Fox — 6
Black Fox — 7
Black Fox — 8
Black Fox — 9
Black Fox — 10
Black Fox — 11
Black Fox — 12

Previous case

Blackstone Family

Next case

Reswap