Technical Details
The marketing language on the main site talks about outcomes — speed, security, ownership. This page is for anyone who wants to know specifically what that means, stack-wise.
Hosting & Security Stack
Every site I host runs on infrastructure I own and administer directly — not a shared third-party platform — with a layered security stack in front of it:
HTTPS via automated DNS-01 certificate issuance and renewal — no manual cert handling, no expiry surprises.
ModSecurity with the OWASP Core Rule Set, blocking SQL injection, XSS, and other common attack patterns in real time.
Automated IP banning on repeated failed logins, plus community-sourced threat intelligence shared across thousands of servers.
UFW configured to block everything except the specific ports a site actually needs.
X-Frame-Options, X-Content-Type-Options, and related headers enforced on every response.
Nightly snapshot backups with a tiered retention schedule, so a bad deploy or hardware failure isn't a data-loss event.
What "custom build" means
Static and lightly-dynamic sites are hand-written HTML/CSS/JS — no WordPress, no page builders, nothing you're fighting against six months from now. There's no framework overhead loading in the background, which is a meaningful share of why these sites load fast.
Web applications are built with Flask (Python) and a proper relational database, containerized with Docker so the whole thing — app, dependencies, configuration — moves as one unit. That matters for you in two ways: it's what makes hosting and updates reliable, and it's what makes the handoff real (see below) instead of theoretical.
Deployment & ownership
On handoff for a custom build, you get the full source code and a Dockerfile — a single file that reproduces the exact environment the app runs in, so it can be stood up on any server, not just mine. For hosted/retainer clients I handle deployment directly; the option to self-host is always there, by design, so there's never a point where leaving me means starting over.
Process, technically speaking
- Consult — scope, data model (if there's a database involved), and integration points get defined before any code is written.
- Build — development happens against that spec, with staging check-ins so you're seeing real progress, not just status updates.
- Handoff — source code, a Dockerfile, and a plain-English runbook covering how to deploy, back up, and update it.
- Host & Maintain — for retainer clients, hosting runs on the stack above with monitoring in place, so issues get caught before you notice them.
