The engine underneath

The AzDesign Framework

Every site I build runs on one PHP application framework I own and maintain. It is not a first draft — it is the accumulated, hardened result of shipping real projects. New work starts from proven parts.

Front-controller routing

A single entry point resolves every request to a page module, with clean, slug-based URLs and a fallback layer for content-driven pages. Adding a section is adding a file, not wiring a new router.

Shared theme, per-site overrides

Presentation comes from a shared Canvas (Bootstrap) theme referenced by every site — not copied into each one. A site adds a single override stylesheet for its own palette and type. One theme source, many sites, no fork to maintain.

Schema-driven content layer

A generic content engine lets a new content type be declared once — its table, its slug, its fields, its relationships — and get listing, reading, and cross-linking without a bespoke set of templates. This very site’s case studies and capabilities are content types, not hardcoded pages.

Authentication & access control

WebAuthn / passkeys and OIDC for phishing-resistant sign-in, backed by a role-based permission model (groups → roles → permissions) that the same code enforces in the UI and on the server before any restricted record is read.

Data access & ingestion

A consistent data layer over MySQL with prepared statements throughout, plus scheduled ingestion jobs that mirror external and public-record sources into clean, idempotent tables.


Proven in production

The framework currently powers BadHOA.com and McClellan Meadows — projects with real data pipelines, real authentication, and real compliance constraints. That is the difference between a framework and a folder of boilerplate.

Build on it All capabilities