scuttle.dev
The site you are reading, shipped as a Composer package that mounts into a host Laravel application through host-based routing. Everything is data in PHP classes (services, cases, posts, projects), one stylesheet, one script, no tracking unless you agree to it, and a test suite that fails on the marketing rules.
The shape #
- src/Catalog.php: the twelve services in three groups, one source for the menu, the home page, pricing and the service pages.
- src/Cases.php, src/Posts.php, src/Projects.php: case studies, blog posts, projects with docs.
- resources/views/layout.blade.php: the shell; public/site.css and public/site.js: the only stylesheet and script.
- tests/Feature/SiteTest.php: renders every page and fails on client traces, zeros as claims and missing links.
How a change ships #
Change, test, push to main, tag. The host app pins the package by tag, bumps its lock, and its CI deploys. A static dump of every page can be written with one test and screenshotted headlessly at desktop and phone width.