
Artist portfolio + AI attendant
FerrisSmith.Art
Georgia, US · Live since 2026
Quality
Case study
The challenge
A 2D character artist's portfolio lived on WordPress — heavy, slow, and hard to make match the artist's own visual identity. The rebuild had to preserve every existing URL and piece of content, add a print shop without taking on PCI scope, and do one thing no template offers: put the artist's own mascot character on the site as a working AI attendant, in voice, without runaway API costs.
The approach
A ground-up Astro 6 rebuild on Bun, static-first: every page prerenders, and client JavaScript exists only as small islands for the starfield, parallax, and mascot console. WordPress content came through a deterministic importer — slugs, dates, and taxonomy preserved, with a generated redirect map covering every legacy URL. The shop uses Stripe hosted Checkout with prices read from Stripe at build time. And D-6401, the artist's mascot, answers visitors via a streaming AI route hardened with same-origin checks, signed stateless history, per-IP rate limits, and a hard monthly spend cap.
Infrastructure
2 dedicated services on private infrastructure.
App
Astro on Bun
KV
Redis
The evidence
Live screenshots, not mockups.

Stack proof
Every claim is verifiable.
- Astro 6Verified
Static-first build — every page prerenders; SSR exists only for the API routes. Confirmed via the Astro v6.4.8 generator meta on the live site and hashed /_astro/* asset bundles.
- Bun runtime
Runs on Bun with the astro-bun-adapter. One service, one process, serving prerendered pages plus the streaming API routes.
- Stripe hosted Checkout
Shop prices are read from Stripe at build time by price ID — never typed into content frontmatter. Checkout hands off to Stripe's hosted flow; no card data touches the site.
- AI mascot attendant
D-6401, the artist's mascot character, answers visitors over server-sent events — same-origin locked, HMAC-signed stateless history, per-IP rate limits, and a monthly spend cap enforced in Redis.
- MoonFactory-hosted
Deployed from a Dockerfile on private infrastructure we own and operate, Cloudflare-fronted. We own the uptime commitment.
- Astro 6
- Bun
- Stripe Checkout
- AI Mascot

