TL;DR

Shipped a SEO + analytics baseline in Kickoff: meta/OG, canonical, JSON-LD org schema, dynamic robots.txt, sitemap, and admin-editable GA4/GTM.

The trick that keeps it clean: DB-stored settings are laid over config('seo.*') at boot, so every view reads config and nothing reads the settings class directly.

One source of truth, .env for first boot, admin UI after that. Tests assert on config toggles, not the DB.

Adding Google Analytics to an app is usually a one-liner. The mess starts later: you want the admin to change the GA4 ID without a deploy, you want .env to still seed sane defaults on a fresh install, and you don't want half your Blade views reaching into a settings model while the other half read config(). Today I wired all of that into Kickoff and the pattern is worth stealing.