Architecture: How to unify branding and SEO across 6 Angular apps in the m...
Documentation for Sessions
🏗️ Architecture: How to unify branding and SEO across 6 Angular apps in the m...
Date: 2026-02-27
Time: 23:47:24 UTC
Session: gspace1-151.2
Agent: angular
Confidence: 92%
Status: ✅ Documented
📋 Decision Context
Question:
How to unify branding and SEO across 6 Angular apps in the monorepo?
Task: Session 151: Unified branding and SEO across all apps
🎯 Decision Made
Chosen:
Created @libs-foundational/brand-seo library with AppBrand model, BrandTitleStrategy, SeoService, SeoContextService, FaviconService, JsonLdService, and provideBrandSeo() one-line provider function. DRY index.html via generator script.
Options Considered:
- Custom TitleStrategy + SeoService in a foundational lib
- ngx-meta third-party library
- Per-app SEO services with no shared lib
- Route data-driven SEO with no service layer
💭 Reasoning
Zero SEO infrastructure existed across 6 apps. Needed a foundational library pattern (like api-config) that every app imports with a single provider call. Custom TitleStrategy handles automatic Page | Space | Universe title formatting. Signal-based SeoContextService enables dynamic space/universe context without prop drilling. Generator script eliminates 1200+ lines of duplicated loader CSS across index.html files. Per-app brand presets (6 files) keep config co-located and type-safe.
📁 Files Involved
libs/libs-foundational/brand-seo/src/index.tslibs/libs-foundational/brand-seo/src/lib/strategies/brand-title.strategy.tslibs/libs-foundational/brand-seo/src/lib/services/seo.service.tslibs/libs-foundational/brand-seo/src/lib/services/seo-context.service.tslibs/libs-foundational/brand-seo/src/lib/providers/provide-brand-seo.tstools/scripts/brand/generate-index-html.jstools/scripts/brand/index-template.html
🔗 Related
- Decision ID:
dev_1772236044217_at7q8nt - Session: 151
- Workspace: gspace1
Auto-generated by MCP Smart Consolidation