Security hardware
A self-hosted website, support portal and licensed downloads for a hardware maker
Lead development of acustek.com since December 2025: a React Router and PostgreSQL application, self-hosted with CI gates, that grew from a marketing site into a customer portal.
- Client
- Acustek
- Period
- December 2025 to present
- Our role
- Lead developer, 719 of 836 commits
The brief
Acustek designs covert audio, video and GPS recording devices for security and forensics customers. They needed a website they could run themselves, on their own hardware, that could later carry customer-facing services such as support and software distribution.
What we built
A React Router v7 application with an Express API on PostgreSQL 16, packaged with Docker Compose and served through Nginx with Let's Encrypt certificates. It went live in January 2026 and has been in continuous development since, with daily database backups and a GitLab CI pipeline that has to be green before anything merges.
In May 2026 the interface moved from MUI to Tailwind v4 and shadcn. The same pass reduced accessibility violations by 31 percent, trimmed the homepage critical path from 590 KB to 523 KB and cleared the lint backlog, with the gates made mandatory so it stays that way.
From website to portal
Over the summer the site grew into a portal. Support tickets are now stored locally as a backup to the ticketing vendor. A licensed software-downloads area, delivered across nine merge requests, gives administrators release management and per-customer entitlements, and records every download in an audit log.
Quality
The codebase carries about 102 unit test files, 15 Playwright specs and 122 Karate API features. That is what lets a one-person team ship to a production site for a hardware company without a separate release team.
Have something similar?