This site
Live websiteWebsite (this portfolio) · September – October 2026
The portfolio you are on: a developer portfolio and a website-services page, with 3D made in Blender.
You are on it. New parts keep shipping as they pass their checks.
I planned this site with a written build spec, design reviews and automatic checks, then built it with AI coding agents (Claude Code) under my direction. It is a static Next.js site on Cloudflare with a real back end: a Cloudflare Worker checks every quote and message, saves it to a D1 database first, emails it to me through Resend, and lists it in a private admin inbox.
My role: Product direction, design decisions, writing and review. Built with AI coding tools (Claude Code) under my direction; 3D made in Blender for this site.
Built with: Next.js 16 (static export), React 19, TypeScript, Tailwind CSS 4, Motion, Base UI
What I did
Every inquiry is saved to the database before it is emailed, so nothing is lost if email fails.
The server works out every price again from the same price list, so no one can change a price in their browser.
Spam checks: same-site requests only, a hidden trap field, a minimum time on the page, and 5 messages per contact per hour.
How it was made.
- A written build spec and design reviews came before the code.
- Project pages work as shareable links, with or without JavaScript.
- The 3D blocks only load when you touch them, to keep the page fast.
Checked before it ships.
- 25 automated API tests: quotes, prices, spam limits and the admin inbox
- 44 automated accessibility checks passed (axe): 11 pages, light and dark, laptop and phone
- 0 errors in 32 page loads in Chrome and Safari
Run on October 8, 2026, on a local copy of the site with a test database.
Done
- Developer portfolio and website-services pages
- A back end that saves every inquiry, with a private admin inbox
- Price builder and quote quiz, priced again on the server
- Light and dark themes
- Blender device renders for the project pictures
Not yet
- The live database and email keys switched on in Cloudflare (tested locally so far)
More details
- Next.js 16 (static export), React 19, TypeScript, Tailwind CSS 4, Motion, Base UI
- Blender (Cycles renders and a glTF model), shown with three.js and React Three Fiber
- Cloudflare Worker API, D1 (SQLite) database, Resend email, and a private admin inbox behind a secret key
- Cloudflare Pages, with the Worker also handling redirects and security headers
- TypeScript, ESLint, 25 automated API tests, browser runs in Chrome and Safari (Playwright), axe accessibility checks and a width sweep from 320 to 1440 px
Credits and notes
- Interface pieces: Motion, Base UI, Kokonut UI and Bklit, with their licenses kept. Icons: Lucide (ISC).





