Built for Peery LLC
empeeryal.com — the platform this site runs on
A blog, deals engine, newsletter, digital-product shop, and client-intake system in one hand-built Next.js app — fast on a phone, accessible, secure, and largely running itself. You're using it right now.
The challenge
A one-person internet business needs the output of five subscriptions — a CMS, a link tracker, an email tool, a checkout, a lightweight CRM — without the monthly bills, the copy-paste glue between tools, or a page builder's generic templates.
The brief I set myself: one custom platform where publishing takes minutes from any browser, every click that matters is measured in my own database, payments are safe to take unattended, and nothing about operating it becomes a second job. And since it doubles as my storefront, it has to be proof of craft in itself — fast on a cheap phone, zero accessibility failures, and hardened enough that I'd happily let strangers poke at it.
The approach
One admin for everything
Markdown posts with scheduling, multi-part series, comments, and a tag manager that can rename or merge a tag across every post in one click. Deals get their own indexable coupon pages with copy-to-clipboard codes and tracked /go redirect links. Case studies, testimonials, and a media library round it out.
Money that survives the edge cases
Stripe Checkout powers deposits, tips, and digital products. Settlement is exactly-once even when Stripe's webhook and the buyer's redirect race each other; refunds automatically revoke the signed download links; discount codes only burn a use when money actually moves. The failure modes you don't think about until they cost you.
Client intake built like a product
A project questionnaire feeds ticket-style request threads with email notifications, deposit invoicing, and a pipeline view — including which marketing source actually produced each lead.
An AI content pipeline with a human gate
The editor can draft with Claude, ChatGPT, Gemini, or Grok — compose a post from a topic, import a deal from a product page URL, or let a daily job turn queued topics into drafts. Nothing publishes itself: every draft crosses my desk, and every AI call is logged with its token cost.
Fast the honest way
No client-side animation framework — everything animates with CSS plus a tiny scroll observer, and content renders visible-first so nothing waits for JavaScript. Pages are statically cached and revalidate surgically when content changes.
Security as a feature
A strict content-security policy, database-backed rate limiting on every public form, DNS-pinned server-side fetching (rebinding-proof), HMAC-signed download and preview links, and honeypot traps with optional Turnstile. The same discipline a client project would get.
Built to not need me
Three hundred unit tests and a full browser suite — including automated accessibility scans — run on every push. A live health dashboard verifies every integration down to the ads.txt file, an uptime endpoint feeds an external monitor, and a daily job handles the housekeeping.
The result
Measured, not vibes: rewriting the animation layer from a JavaScript runtime to CSS cut mobile Total Blocking Time from 670 ms to 170 ms, and rendering content visible-first brought Largest Contentful Paint back under budget from over four seconds.
Publishing a post or a deal takes minutes; scheduled posts release themselves. Every deal click and coupon copy is counted twice — in my own database and in Google Analytics — so the dashboard never depends on a third party.
The accessibility gate enforces zero serious or critical WCAG violations on every push, across the public site and the admin.
And the part no template can offer: this case study is running on the thing it describes. Slow site? Broken page? You'd be looking at it.
Want something like this?
Tell me what you need and I'll come back with a plan and a quote.
Start a project