← Back to Projects In Development

Durham County ABC Board

Custom Web Platform & Digital Modernization

Java Spring Boot PostgreSQL HTMX Tailwind CSS Directus CMS

Client

The Durham County ABC Board is the public liquor board for Durham County, North Carolina, operating 10 retail locations. As a public entity, revenue from operations is reinvested into the community.

The Problem

Their existing Wix site was static. No real product search, no inventory visibility across stores, no admin self-service. Monthly specials were managed as state-generated PDFs, which meant the public-facing site lagged the actual store shelves and the admin team had no way to update content without help from a vendor.

The Proof of Concept

I built a working POC before any contract was signed — HTMX-powered instant product search and a 10-location store locator with real-time inventory — and demonstrated it directly to GM Lou Sordel. That de-risked the engagement and let the board see the architecture before a dollar was committed.

The Platform

A custom Spring Boot / Thymeleaf application built around the things customers and staff actually do every day:

  • Instant product search — HTMX-driven with a 300ms debounce, no page reloads, full-text PostgreSQL search using tsvector/tsquery
  • 10-location store locator — per-store inventory shown in real time so customers know which store has what
  • Drop Zone hub — a dedicated landing spot for allocated bottle releases
  • Lottery system — board-controlled allocation for high-demand drops, fair and auditable
  • Public events calendar — meetings, tastings, and community events

The CMS

Directus — an open-source headless CMS — sits on the same PostgreSQL database as the Spring Boot app. Zero licensing fees. The admin team manages meeting minutes, audits, monthly specials, static pages, calendar events, drops, and lottery entries on their own. No developer required for day-to-day content work.

Automated Inventory Agent

A scheduled Spring Boot background service runs every 15 minutes: pulls live inventory from the POS, compares snapshots, flags low-stock items and sync failures, and logs every run for audit. The whole agent runs inside the existing app — no LLM API, no third-party service, no added monthly cost.

Stack

  • Java 17, Spring Boot 3.x, Thymeleaf
  • Tailwind CSS, HTMX, Alpine.js
  • PostgreSQL with full-text search
  • Directus headless CMS
  • GitLab CI/CD, Digital Ocean