// under the hood

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:

TLS / Let's Encrypt

HTTPS via automated DNS-01 certificate issuance and renewal — no manual cert handling, no expiry surprises.

Web Application Firewall

ModSecurity with the OWASP Core Rule Set, blocking SQL injection, XSS, and other common attack patterns in real time.

Fail2ban + CrowdSec

Automated IP banning on repeated failed logins, plus community-sourced threat intelligence shared across thousands of servers.

Default-deny firewall

UFW configured to block everything except the specific ports a site actually needs.

Security headers

X-Frame-Options, X-Content-Type-Options, and related headers enforced on every response.

Automated backups

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

← Ready to start a project?