Operating a site matrix without chaos
Use shared modules for speed, then isolate brand differences at the config layer.
Shared where it matters
The backend foundation should stay shared:
- auth
- billing
- credits
- reusable UI islands
- deployment patterns
Isolate what should differ
Each site should mainly differ in:
- positioning
- brand identity
- page hierarchy
- docs and topical content
Practical rule
If a change improves every site, it probably belongs in a shared package or shared Astro page pattern. If it changes the offer or niche, keep it in site.config.ts.
Result
You move faster, keep the codebase maintainable, and avoid creating a new repo every time a new niche or product angle appears.