
Template details
Astro v7 Monorepo Template
Production-ready Astro v7 monorepo template with Starter and Blog apps, Tailwind v4, Svelte 5, i18n (EN/DE) and Cloudflare deployment.
About this template
Astro v7 Monorepo Template is a production-ready pnpm-workspaces starter that ships two independently deployable Astro v7 apps — a landing-page Starter and an MDX Blog — sharing one design system from a shared/ package.
What is the Astro v7 Monorepo Template?
The template is a pnpm-workspaces monorepo containing the apps/starter landing app and the apps/blog content app, both built on Astro 7.4.2 and sharing a shared/ library of design tokens, layouts, SEO helpers and Astro config. It takes Markdown/MDX posts and page content as input, outputs static Astro sites with generated sitemap, robots, llms.txt and RSS, and deploys to Cloudflare Workers via wrangler. It is maintained by casoon and published under the MIT license.
Key Features
- Astro 7.4.2 stack — Vite 8 with Rolldown, the Rust
.astrocompiler and Sätteri markdown (GFM + heading IDs built in, no remark/rehype plugins needed). - Tailwind CSS 4.3.3 + Svelte 5 — CSS-first Tailwind config with OKLCH colors, and Svelte 5 Runes (
$state,$derived) for reactive islands. - i18n (EN/DE) — Astro i18n routing with a language switcher; the blog keeps one folder per locale (
src/content/blog/en/,src/content/blog/de/) and matching file names map to the same post. - OG images and RUM — build-time Open Graph image generation (Satori + resvg) per page and locale, plus
@casoon/astro-webvitalsreporting LCP, CLS, INP, FCP and TTFB through a Zod-validated endpoint (10% production sample). - CSP and security —
security.cspwith SHA-256 hashes or same-origin scripts, plus@casoon/nosecretspre-commit secret scanning and optionalsecurity.txtviaPUBLIC_SECURITY_CONTACT. - Build audits —
@casoon/astro-post-audit(v0.9.1) checks SEO, links and WCAG signals at build time;fallowreports dead code, complexity and duplication. - Testing — Playwright E2E with axe-core a11y scanning for both apps; Biome handles linting and formatting; unit tests run on
node --test. - Site files and JSON-LD —
@casoon/astro-site-filesgeneratesrobots.txt,sitemap.xml,llms.txt,humans.txtand (optionally)security.txt;@casoon/astro-structured-dataemits typed WebPage, WebSite, Organization and Article JSON-LD.
Who is it for?
- Developers running a site plus a blog — build both from one repository with shared components while deploying each app separately to Cloudflare Workers.
- Teams shipping localized marketing pages — use the Starter's EN/DE i18n, contact form via Astro Actions and Zod validation, and per-locale OG images.
- Content-focused publishers — use the Blog app's MDX support, sticky table of contents, reading progress bar and enriched RSS feed with reading time and series metadata.
Use cases
- Campaign landing pages: add a folder under
apps/that imports fromshared/and reuse the design tokens, SEO component and metadata pipeline. - Documentation or shop front-ends: fork the Blog or Starter as a page- or content-focused base; both stay independently deployable.
- Cloudflare Workers projects:
pnpm deploy:starter,pnpm deploy:blogorpnpm deploybuild and runwrangler deploy; swap the adapter for Node, Vercel or Netlify with three config changes.
How does it work?
Run pnpm install, then pnpm dev for the Starter (port 5014) or pnpm dev:blog for the Blog (port 4322). pnpm build builds all apps and generates site files; pnpm test:e2e runs Playwright tests (starter under wrangler dev, blog on a static server).
FAQ
What are the Node and pnpm requirements?
The template requires Node.js 22.12.0 or newer and pnpm 11.0.0 or newer. TypeScript is pinned to 6.0.3 because @astrojs/check restricts its peer range to 5.x or 6.x and TypeScript 7's native compiler lacks the programmatic API it relies on.
Is the contact form functional out of the box?
No. The Starter's contact form ships as a demo: deliverContactMessage() in src/actions/contact.ts is a hook for your mail provider, and until it returns true the page tells visitors nothing was sent. A honeypot field is included, but rate limiting or Turnstile should be added before real delivery.
Which platforms besides Cloudflare are supported?
Node.js, Vercel and Netlify are supported with three changes per app: swap the adapter, override image.service to Sharp, and delete wrangler.toml. The default Web Vitals endpoint has no Cloudflare runtime import, so it works unchanged on those platforms.
What changed from the v6 template?
The v7 template moves to Vite 8 with Rolldown, a Rust .astro compiler that requires every HTML tag to be closed, compressHTML: 'jsx', Sätteri replacing remark/rehype, and stable advanced routing using the reserved src/fetch.ts entry point.
Pricing
The template is released under the MIT license and is free to use.
















