Two publications, one application
A host resolver selects the correct publication and canonical origin. The forwarding domain preserves paths and query strings.
Understand the system. Then grow with it.
Two publications make the mechanics of growing visible. Readers can inspect a system, follow its water path, and connect each component to the practical work of running it.
A flat diagram can hide the connections that matter. Interactive teaching needs to show how a system fits together while remaining useful on a small screen or without WebGL.
Detailed guides are paired with assembled, cutaway, and exploded system views. Calculators show their assumptions; static diagrams and complete lesson text remain available without the 3D engine.
A host resolver selects the correct publication and canonical origin. The forwarding domain preserves paths and query strings.
Complete reading content is prerendered. Interactive system models enhance the lesson; they are not the only way to understand it.
Affiliate placements and sponsorship settings live behind publisher access. Public pages remain fast and readable without requiring a visitor account.
Preflight runs shared Vapor and production-security checks alongside publication-specific checks for encrypted sessions, indexing and publisher storage. SiteCredit adds the common BWD attribution outside the React hydration root. Publication routing and educational models remain application code.
The application uses an explicit host map. It rejects unknown publications and local-only hostnames in production.
$host = strtolower($request->getHost());
// Dotted host keys must be looked up as array keys, not config dot paths.
$site = config('growing.hosts')[$host] ?? null;
abort_unless($site, 421, 'This host is not configured for this publication.');
if (app()->environment('production') && $site['environment'] === 'local') abort(421);The same release script always checks the Vapor manifest, then adds production configuration and publication rules when the runtime profile is requested. Required assets and prerendered pages are checked separately.
Preflight package ↗if(in_array('--production-runtime', $argv, true)){
$checks[] = app(ProductionConfiguration::class);
$checks[] = new PublicationRuntime;
}
foreach ((new Runner)->run($checks) as $result) if ($result->status === 'fail') $errors[] = $result->name.': '.$result->message;The site keeps its own copyright. SiteCredit adds the standard BWD attribution after it, using isolated styles bundled with the application.
SiteCredit package ↗<x-site-credit />Hydro.how is the companion forwarding domain. Educational content does not claim independent specialist review.


Designed, Developed and Hosted by Better Web Design and Development Services, LLC