Novaconium

Configuration

Novaconium ships its own defaults inside the image. Your project changes only the keys it needs by returning them from a config.php at the root of your mounted project directory.

How overrides work

The framework's defaults live in novaconium/config.php inside the image (pages_dirs, cache_dir, debug, site_name, matomo_url, matomo_site_id, admin_auth_enabled, db_connections, draft_routes, and so on). That file is part of the framework and is not meant to be edited.

Your project provides config.php, which returns an array of just the keys you want to change. On boot, Novaconium shallow-merges it over the defaults, so anything you leave out keeps the framework value. This is the same "project overrides framework" pattern used for pages and library classes.

<?php
// config.php
return [
    'site_name' => 'Example Co',
    'debug'     => false,
];

A config.php that returns an empty array, or no config.php at all, is perfectly valid. Every setting then falls back to the framework default.

Debug mode

debug defaults to true. It is a single boolean that turns on the things you want while developing and none of the things you want in production. Set it to false before you deploy.

When debug is on:

  • PHP errors are shown. Notices, warnings, and fatals render in the response instead of being logged silently.
  • Twig debug mode is on. {{ dump(x) }} works in templates, and edited templates take effect on the next request.
  • The static HTML cache is bypassed. Every page renders fresh on each request. Turn debug off and normal caching resumes as pages are re-requested.

Site name

site_name (default 'My Site') is used by the root layout as the default page <title> when a page does not set its own, as og:site_name, and in the footer copyright line.

<?php
// config.php
return [
    'site_name' => 'Example Co',
];

Pages that were already cached before the change need a cache clear to pick it up: php novaconium/bin/clear-cache.php.

Admin authentication

admin_auth_enabled (default false) gates every /admin/* route behind a session login. While it is off, /admin/* is open and the login and user routes return 404. Turning it on is what enables member-gated and group-gated content as well.

Draft pages

draft_routes (default []) lists routes only an authenticated admin can reach. Everyone else gets a plain 404, and a draft route is never written to the static cache. It needs admin_auth_enabled and at least one user to gate anything.

Databases

db_connections defines the named PDO connections your pages can open. See Getting started for the extensions each driver needs.