Skip to content

[!todo] finish specs, …

  • Create related sites with similar branding and styling
    • TalbotStevens.com (ts.com)
    • SmartDebtCoach.com (sdc.com)
    • SmartDebtWealth.com (sdw.com)
  • sdc.com
  • sdc.com/myths
  • sdc.com/books
  • sdc.com/insights (/blog)
  • sdc.com/academy (/courses)
  • sdc.com/coaching (/training, /speaking, /consulting)
  • sdc.com/community (or community.sdc.com)
  • …
  • sdc.com needs /country/language separate content
    • terminology, products, and tax rules are different in each country
    • multilingual content is either mandated or a good business decision
  • want same capacity for ts.com
  • allows Single Source of Truth for structure and styling to be shared with several sites
  • initial design iterations and testing done in Template sandbox site

[!details]+ Monorepo Folder Structure

monorepo/
β”œβ”€β”€ pnpm-workspace.yaml
β”œβ”€β”€ package.json # root package.json for scripts & shared dev deps
β”œβ”€β”€ tsconfig.json # base TS config for all packages
β”‚
β”œβ”€β”€ packages/
β”‚ β”œβ”€β”€ components/ # shared Astro/Svelte/React components
β”‚ β”‚ β”œβ”€β”€ SmartDebt.svelte # inline "Smart Debt", for use in .svelte pages
β”‚ β”‚ β”œβ”€β”€ SmartDebt.jsx # inline "Smart Debt", for use in .mdx pages
β”‚ β”‚ β”œβ”€β”€ Header.astro
β”‚ β”‚ β”œβ”€β”€ Footer.astro
β”‚ β”‚ └── index.ts
β”‚ β”‚
β”‚ β”œβ”€β”€ design-tokens/ # shared CSS variables, typography, spacing
β”‚ β”‚ β”œβ”€β”€ tokens.css
β”‚ β”‚ └── index.ts
β”‚ β”‚
β”‚ └── utils/ # shared utilities (formatters, hooks)
β”‚ └── index.ts
β”‚
β”œβ”€β”€ sites/
β”‚ β”œβ”€β”€ Template/ # design sandbox
β”‚ β”‚ β”œβ”€β”€ astro.config.mjs
β”‚ β”‚ β”œβ”€β”€ package.json
β”‚ β”‚ └── src/
β”‚ β”‚ β”œβ”€β”€ components/
β”‚ β”‚ β”œβ”€β”€ layouts/
β”‚ β”‚ β”œβ”€β”€ pages/
β”‚ β”‚ β”‚ └── index.astro
β”‚ β”‚ β”œβ”€β”€ content/
β”‚ β”‚ β”‚ └── us/en/ # default example content
β”‚ β”‚ β”‚ └── blog/
β”‚ β”‚ β”‚ └── hello-world.mdx
β”‚ β”‚ └── styles/
β”‚ β”‚ └── global.css
β”‚ β”‚
β”‚ β”œβ”€β”€ sdc.com/ # SmartDebtCoach.com site
β”‚ β”‚ β”œβ”€β”€ astro.config.mjs
β”‚ β”‚ β”œβ”€β”€ package.json
β”‚ β”‚ └── src/
β”‚ β”‚ β”œβ”€β”€ components/ # site-specific components (rare)
β”‚ β”‚ β”œβ”€β”€ layouts/
β”‚ β”‚ β”œβ”€β”€ pages/
β”‚ β”‚ β”‚ β”œβ”€β”€ index.astro
β”‚ β”‚ β”‚ β”œβ”€β”€ myths/
β”‚ β”‚ β”‚ β”‚ └── index.astro
β”‚ β”‚ β”‚ β”œβ”€β”€ books/
β”‚ β”‚ β”‚ β”‚ └── index.astro
β”‚ β”‚ β”‚ β”œβ”€β”€ insights/
β”‚ β”‚ β”‚ β”‚ └── index.astro
β”‚ β”‚ β”‚ β”œβ”€β”€ academy/
β”‚ β”‚ β”‚ β”‚ └── index.astro
β”‚ β”‚ β”‚ β”œβ”€β”€ coaching/
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ training.astro
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ speaking.astro
β”‚ β”‚ β”‚ β”‚ └── consulting.astro
β”‚ β”‚ β”‚ └── community/
β”‚ β”‚ β”‚ └── index.astro
β”‚ β”‚ β”œβ”€β”€ content/ # structured content
β”‚ β”‚ β”‚ β”œβ”€β”€ us/en/
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ blog/
β”‚ β”‚ β”‚ β”‚ β”‚ └── first-post.mdx
β”‚ β”‚ β”‚ β”‚ └── pages/
β”‚ β”‚ β”‚ β”‚ └── mission.mdx
β”‚ β”‚ β”‚ β”œβ”€β”€ ca/fr/
β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ blog/
β”‚ β”‚ β”‚ β”‚ └── pages/
β”‚ β”‚ β”‚ └── ... (other locales)
β”‚ β”‚ └── styles/
β”‚ β”‚ └── global.css
β”‚ β”‚
β”‚ β”œβ”€β”€ ts.com/ # TalbotStevens.com (structure similar to sdc.com)
β”‚ └── sdw.com/ # SmartDebtWealth.com (structure similar to sdc.com)
β”‚
└── .github/ # optional shared CI/CD