File-based routing
A directory under App/pages/ is a route. [param] segments capture into $params. No route table to maintain.
A tiny, Hugo-flavored PHP micro-framework: file-based routing, Twig templates, and static caching — no Composer, no build step. This page lives at App/pages/index.twig; start editing there.
A directory under App/pages/ is a route. [param] segments capture into $params. No route table to maintain.
Drop an index.php next to any index.twig for real logic, or return a Response to short-circuit templating entirely.
Sidecar-less pages render once and get served straight from Apache afterwards — this page included.
Meta description, canonical links, Open Graph, and Twitter Card tags ship by default, all overridable per page.
A multi-user session login gates every /admin/* route, with email verification for new accounts. Off by default in App/config.php.
Gate a page to a user or group with one Lib\Access call in its sidecar, or preview an unfinished page as an admin-only draft.
An upload/browse/delete UI at /admin/media, and Lib\Comments for a moderated comment thread on any page.
Lib\Db wraps PDO for SQLite or MySQL, multiple named connections at once, migrating automatically on first use.
One content index backs full-text /search, /sitemap.xml, and blog tag browsing — reindexed lazily, no extra steps.
/blog/feed is built from the same hand-written post list App/pages/blog/index.php renders from — no database required.
Built-in analytics tracking, off by default, alongside a nav toggle that swaps every color via CSS custom properties.
Lib\Csrf, Lib\SpamGuard's honeypot check, and cleaning input accessors — wired into the contact form and every admin form.
App/ is checked before novaconium/ for every page, layout, and Lib\ class — override by dropping a file at the same relative path.