Software engineering, end to end.

Brightwork Digital is an engineering studio based in East Nashville. We design, build and run the systems a business depends on: data models, APIs, integrations and the infrastructure underneath them.

Working with clients across the United States and South Africa.

The stack

Most of our systems share this architecture. Follow one request through it, or select a layer for detail.

Fig. 1. One request through a typical system, from the screen to the servers.

Selected systems

Live, or in final build ahead of launch. Our own product, Shelf Help, runs on the same principles.

Standards

What we hold our systems to.

Requirements
On our larger platforms, numbered requirements, each traced to the tests that cover it.
Testing
Automated tests on every change, browser tests every night. A failing build doesn't ship.
Releases
Automated and health-checked. A release that fails its checks rolls itself back.
Access
Role-based and enforced on the server, not just hidden on screen.
Audit
Significant actions are written to a log that can't be edited.
Data
Encrypted in transit, and stored in the country the law requires.
Backups
Automated, with restores rehearsed.
Ownership
Your data is always yours. On commissioned builds, so are the code and documentation.

The team

You work with the engineers who build the system, not an account manager.

Working together

An NDA comes first. Fixed prices, agreed in writing.

  1. 1

    Scope

    We map the work and the data, and agree what to build and what it costs.

  2. 2

    Build

    Working software every week, on a staging server you can use.

  3. 3

    Run

    Hosting, monitoring and support after launch, month to month.

Questions

Straight answers to what clients ask first.

What do you build?

Custom business systems: databases, APIs, back-office tools, client portals and the integrations between them, and the infrastructure they run on.

Which technologies do you use?

TypeScript, React and Next.js for interfaces; Python with Django, or Node, on the server; PostgreSQL for data; Celery and Redis for background work; Linux servers under systemd, with Terraform for DNS and GitHub Actions for delivery.

Who owns the code and the data?

Your data is always yours. On a commissioned build, so are the code and the documentation. We sign an NDA before we start.

Where is our data hosted?

On servers we set up and manage for your system, in the country your data is required to stay in.

How is a project priced?

We scope the work first and agree a fixed price in writing. Hosting and support after launch are month to month.

Describe what you need built.

We'll reply within one business day with questions and a first view of how we'd approach it.

Interface

React, TypeScript, Next.js

Typed front ends built around each role's daily work, not a generic dashboard. They work on a phone and a desktop, and are built to WCAG AA with automated accessibility checks.

Screens only ever show what the server has already decided the user may see.

Edge

Caddy, TLS, Cloudflare DNS

Cloudflare runs DNS. On the server, Caddy terminates TLS with automatically renewed certificates and routes requests to the application, which applies rate limits.

Databases, queues and storage listen on the server alone. From outside, only the web ports, SSH and, on platforms with video, the media ports are open.

Application

Django, Node, REST APIs

The business rules live here: who approves what, how commission is split, what a patient may order. Every request is authenticated and checked against the user's role on the server.

Integrations with banks, ID checks, email, payments and partner systems are wrapped so they can be tested without the live service.

Where it saves real time, a language model reads a document or drafts text, and a person approves the result.

Background jobs

Celery, Redis, scheduled tasks

Anything slow or scheduled runs on workers: documents, email, imports, reminders and nightly checks. Jobs are retried safely and logged, so nothing is lost if a step fails.

Data

PostgreSQL, object storage, audit log

One carefully modelled PostgreSQL database per system, with migrations under version control. On the telehealth platform, row-level security enforces access in the database as well as in the code.

Documents live in S3-compatible storage with versioning. Audit records go to an append-only log.

Migration is part of the work. We have moved a 49-table SQL Server database, years of spreadsheets and an audio archive, reconciling counts at each step.

Infrastructure

Linux, systemd, Terraform, GitHub Actions

Each system runs on servers in the country its data must live in, set up from version-controlled scripts, with DNS managed in Terraform.

Every change goes through continuous integration. Deploys are automatic, health-checked and roll back on failure. Backups are automated, and restores are rehearsed.

Estate agency platform

Real estate, about 50 agents and 8 back-office staff

One system for leads, listings, deals from offer to registration, anti-money-laundering checks and commission. It replaced a legacy desktop CRM and a set of Excel workbooks.

152,000 contacts and the deal history were migrated from a 49-table SQL Server database, with deals matched to the spreadsheets on date, price and agent.

Commission needs two approvals. Every party is checked against a compliance checklist, with a five-year audit trail. Each agency runs as its own isolated deployment.

Staff can query the system in plain language through their own AI assistant, which goes through the same API and permissions as the web app.

Stack
Django, Django REST framework, React, PostgreSQL 16, Redis, S3, systemd
Built in
About four months to first use

Wealth management platform

Financial services, a group of four businesses, two of them licensed financial services providers

A single client record shared by four businesses, where each business, adviser and role sees only what it should. Commission fields are masked by role.

Onboarding documents are read and compared with the record before they reach compliance, who make the decision. Every party is screened and risk-rated, and the next review is scheduled from the rating.

Investment reviews are built from provider data and issued as locked documents. A logically separate, append-only audit database records every action.

More than 2,600 numbered requirements across 32 documents. Every first-phase requirement is covered by a test or has a documented reason it isn't.

Stack
Django, React, PostgreSQL 16, Celery, MinIO, Caddy, systemd, Terraform
Hosting
Its own server in South Africa

Telehealth platform

Healthcare, a doctor-led telehealth service with an online shop

Patients complete a medical questionnaire, book and attend a video consult with a doctor, and receive an electronic prescription. Prescription items can only be ordered against a valid prescription, and are made up by a licensed partner pharmacy.

Consultations and the shop share one PostgreSQL database, so eligibility is a query rather than a sync between systems. Row-level security means a doctor's queries can only return their own patients.

Video runs on a self-hosted LiveKit server in Johannesburg. Booking is built in, with a database constraint that makes double-booking impossible. Sign-in supports passkeys, and staff must use two-factor authentication.

Stack
Next.js, TypeScript, PostgreSQL, Drizzle, LiveKit, WebAuthn, Caddy
Testing
Vitest, Playwright, automated accessibility checks

Sermon archive

A church's 46-year preaching archive

Nearly 3,000 sermons existed only as audio. Each was transcribed with timestamps, so every paragraph plays from the moment it was said.

A language model then structured each sermon: a summary, topics, an outline, the passages it expounds and the illustrations it uses, over 26,000 of them, each linked back to its sermon.

Search covers every word, and the archive can be browsed by book and chapter of Scripture.

Stack
Astro, Whisper, Gemini, PostgreSQL with pgvector
Scale
2,967 sermons, 225 series, about 2,500 hours of audio

Graham Peyton

Electrical and biomedical engineer, PhD, Imperial College London

Graham is an electrical and biomedical engineer by training. He works in AI chip engineering, on the automation and verification behind chip design.

At Brightwork he looks after the servers, deployments and automation behind our client systems.

PhD, Imperial College London.

David Peyton

Founder, engineering lead, MTC (UJ)

David founded Brightwork Digital in 2023 and leads the engineering on each project, from requirements to support after launch.

He has built healthcare training, support and analytics systems since 2011, including the learning platform, provider dashboard and data pipelines for a Henry Ford Health care-quality program used by more than 3,200 providers.

MTC (UJ). Former clinician and lecturer at the University of Johannesburg.

Matthew Proctor

Principal, healthcare systems, MTC (UJ), ICCSP (FICS)

Matthew has built healthcare apps, clinical training and patient support systems since 2011, with the analytics and automation behind them. He is a principal on the telehealth platform we built for Revéra Labs.

MTC (UJ), ICCSP (FICS). Former clinician and part-time lecturer at the University of Johannesburg.