pxpzplain PHP · ThinkPHP 8
Stack

Stack

Nothing experimental: a small, boring stack that a client can keep running.

PHP 8.5plain PHP templates with framework layering
ThinkPHP 8routing, controllers, ORM, middleware, validators
SQLite / MySQLSQLite by default for single-server sites, MySQL when needed
Nginx + PHP-FPMdedicated pool, long cache for assets, none for HTML

Layering

Routes, controllers, models, middleware and validators stay on the framework side; templates stay as plain PHP. Data access goes through the ORM, never through ad-hoc SQL scattered in views.

Operations

Dedicated PHP-FPM pool per site, long cache for assets, HTML never cached, logs under the application directory. A single server is enough for a site of a few thousand pages.