← Back to work
Government · Retail Platform

DURHAM
ABC

Complete
Java 17Spring Boot 3.5Spring SecurityThymeleafHTMXAlpine.jsTailwind CSSPostgreSQLFlywayDirectus CMSResendCloudflare TurnstileDO SpacesGitLab CI/CDDigitalOcean
Status
Complete · Live since July 2026
Store locations
10
Replaces
Wix site
Automated tests
1,100+
01 — The Brief

Off Wix, onto something built for the job

Durham County ABC was running its public presence on a Wix site that couldn’t keep up with how people actually shop — finding products, locating stores, and knowing what’s in stock across the county. With 84% of visitors on mobile, the replacement had to be built mobile-first from the start.

The engagement was de-risked before it began. I demonstrated a working proof of concept before signing, and the highest-risk feature was contractually gated first: Phase 1 product search was a material deliverable with a termination clause if it failed acceptance. It cleared, and the remaining three phases followed.

02 — What Shipped

Search, locate, run the board

The platform is built around the way customers move through it — from “is it in stock?” to “where can I get it?” — and around a board that needs to manage its own content without a developer.

  • Instant product search with faceted filters, powered by an integration with the Dalcom TAG Retail API, the board’s POS provider
  • Store locator with per-store inventory across all 10 Durham ABC locations
  • Drop Zone hub with a board-controlled lottery for limited releases — intentionally no push notifications, an anti-resale decision by the board
  • Monthly specials, public calendar, and meeting minutes and audits managed from the CMS, with enforced newest-first ordering on board records
  • Careers section with job applications and résumé handling routed to HR, plus a Mixed Beverage request intake form
  • Employee portal behind authenticated access
  • Automated inventory monitoring agent that tracks stock changes across all 10 stores — internal only, with no public route or notification channel
  • Counsel-reviewed privacy notice and transactional email via Resend
03 — The Engineering

Fast, accessible, hardened

The POS feed offers no sorting, filtering, or pagination, so the platform does that work server-side. Caffeine caching took warm searches from about 5 seconds to under 0.4, and gzip cut the result payload by 95%.

Directus gives editors a full admin UI, but Flyway remains the single source of truth for every table, and Hibernate validates the schema on boot before any editor can touch it. Server-rendered Thymeleaf with HTMX and Alpine.js means fast first paint and full functionality without JavaScript.

  • 1,100+ automated tests — unit, MockMvc, and Testcontainers against real PostgreSQL
  • Zero WCAG 2 AA violations across every public route, verified with axe-core each phase
  • Security posture — CSRF, CSP and security headers, Cloudflare Turnstile on every public form, PII-redacted logging
  • Blue-green production cutover — a fresh parallel environment verified feature by feature before the DNS flip
04 — Status

Complete, in post-launch support

All four phases delivered in about four months from kickoff to DNS flip. Live at durhamabc.com since July 2026, now in a one-year post-launch support engagement with a biweekly change request cadence.

Building something like this?

LET'S TALK.

Get in touch →