AstroBlogDocumentationCorporate WebsiteStarter

astro-cloudflare-starter — Astro Blog Template

By milzamsz

A static marketing, blog, and documentation site starter built on Astro, intended for deployment to Cloudflare Pages, with content managed in Markdown and no CMS or database.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Marketing pages, blog, and Starlight documentation share one Astro project, with built-in full-text search for docs

02

Content is stored as Markdown/JSON in src/content and type-checked through content collection schemas

03

English-first, with a built-in prefix-routing-based multilingual mechanism that can be extended to other languages

04

Preconfigured canonical, hreflang, JSON-LD, Open Graph, sitemap, RSS, and dynamic llms.txt

05

Light/dark theme with a monochrome OKLCH design system

06

Optional Cloudflare R2 media storage and a secret-protected cleanup worker

Template Details

This is a static site template built with Astro, positioned as a combination of marketing pages, blog, and documentation. Marketing pages and blog content are stored as Markdown under src/content and type-checked through content collection schemas; the documentation section is provided by Starlight with full-text search. The site defaults to English and includes a prefix-routing-based multilingual mechanism that can be extended to other languages.

The theme provides light/dark switching and a monochrome OKLCH design system, and includes preconfigured SEO output: canonical, hreflang, JSON-LD, Open Graph, sitemap, RSS, and a dynamically generated llms.txt. The build output is static files and can be deployed to Cloudflare Pages; the template also includes an optional Cloudflare R2 media storage binding and a secret-protected cleanup worker.

The template does not include a CMS or database; content updates rely on Git commits and merges. The repository is released under the MIT license; third-party assets such as demo images, fonts, and icons require separate license verification; external services such as R2 and domains may incur costs.

AstroBlogDocumentationCorporate websiteStarter

Is it right for your project?

Use Cases

  • Build a static site with marketing pages, a blog, and documentation for a product
  • Host a content site without a database on Cloudflare Pages
  • Projects that need multilingual prefix routing and default SEO metadata configuration
  • Teams that want to manage content with Git and Markdown without introducing a CMS

Suitable For

  • Developers or small teams comfortable maintaining content through a Git workflow
  • Static site projects planned for deployment to Cloudflare Pages
  • Sites that need marketing pages, a blog, and documentation to coexist
  • Developers who want to modify the code themselves based on an MIT-licensed foundation

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    After cloning the repository, run pnpm install and pnpm dev; the local default address is http://localhost:4321

  2. 2

    Before use, update url, name, description, author, email, social links, and OG image in src/config/site.config.ts

  3. 3

    Update src/config/nav.config.ts, the Starlight editLink and GitHub links in astro.config.ts, and the project name and R2 bucket name in wrangler.jsonc as needed

  4. 4

    Copy .env.example to .env and set SITE_URL; configure CLEANUP_SECRET as a Cloudflare secret only when using the R2 cleanup worker

  5. 5

    When deploying to Cloudflare Pages, the build command is pnpm build and the output directory is dist; you can also deploy manually with npx wrangler pages deploy dist

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • R2 media storage and the cleanup worker are optional features; enabling them requires configuring an R2 bucket in Cloudflare and setting CLEANUP_SECRET as a Cloudflare secret, and may incur Cloudflare service fees.
  • The CLEANUP_SECRET environment variable is required only when using the R2 cleanup worker; it is not needed if this optional feature is not used.
  • Deployment depends on the external Cloudflare Pages service and requires connecting the repository to a Cloudflare Pages account; using this hosting service may incur fees.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur separate charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Optional Cloudflare R2 media storage + a secret-guarded cleanup worker

Original README

Set `CLEANUP_SECRET` as a Cloudflare secret only if you use the R2 cleanup worker.

Original README

Connect the repo to Cloudflare Pages (build command `pnpm build`, output `dist`)

Original README
https://github.com/milzamsz/astro-cloudflare-starter/blob/main/LICENSEhttps://github.com/milzamsz/astro-cloudflare-starter/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
Astro Themes
Documentation and maintenance reference score
More documented · 92 / 100
Technologies
Astro
Website type
Blog · Documentation · Corporate Website · Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-09-14
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Astro as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: 2cb270776805edc576d3b54eb174b913626e76bda5370dbbbf952de218c0b51f

2026-10-02T21:37:03.979Z

Source file / repository
# Astro Cloudflare Starter

A production-ready marketing + blog + docs site built with **Astro 7** and **Cloudflare Pages**. English-first and multilanguage-ready. Content is managed with Git and Markdown — no CMS, no database.

## Features

- English-first with a multilanguage-ready i18n engine (prefix-based routing)
- Marketing pages, blog, and Starlight-powered docs with full-text search
- Light/dark theming with a monochrome OKLCH design system
- SEO defaults: canonical, hreflang, JSON-LD, Open Graph, sitemap, RSS, dynamic `llms.txt`
- Optional Cloudflare R2 media storage + a secret-guarded cleanup worker
- Static output — fast on the Cloudflare CDN, cheap to host

## Quick Start

```bash
git clone https://github.com/milzamsz/astro-cloudflare-starter.git
cd astro-cloudflare
pnpm install
pnpm dev
```

Open **http://localhost:4321**.

## Make it yours

After clicking **Use this template**, update these:

- [ ] `src/config/site.config.ts` — `url`, `name`, `description`, `author`, `email`, social links, OG image. Single source of truth (canonical/OG/sitemap/`llms.txt`; `astro.config.ts` reads `url`).
- [ ] `src/config/nav.config.ts` — footer GitHub/social URLs.
- [ ] `astro.config.ts` — Starlight `editLink.baseUrl` and the GitHub social link.
- [ ] `wrangler.jsonc` — project `name` and the R2 bucket name (or remove the R2 binding if unused).
- [ ] `public/favicon.svg`, logos, and the default OG image.
- [ ] `.env.example` → `.env`; set `SITE_URL`. Set `CLEANUP_SECRET` as a Cloudflare secret only if you use the R2 cleanup worker.
- [ ] Content in `src/content/` (blog, services, pages, docs, settings).
- [ ] `LICENSE` copyright holder and `CHANGELOG.md`.

> Tip: update `src/config/site.config.ts` (name, author, email, social links, URL) to make this template yours.

## Documentation

| Document | Purpose |
|----------|---------|
| [SETUP.md](SETUP.md) | Setup and Cloudflare Pages deployment |
| [CONTRIBUTING.md](CONTRIBUTING.md) | Development workflow and conventions |
| [SECURITY.md](SECURITY.md) | Reporting vulnerabilities |
| [CHANGELOG.md](CHANGELOG.md) | Release notes |
| `/docs` (Starlight) | In-app guides: getting started, content, i18n, deployment |

## Scripts

```bash
pnpm dev        # start dev server
pnpm build      # production build to dist/
pnpm preview    # preview the production build
pnpm lint       # eslint + stylelint + type-check + validations
pnpm test       # unit tests (vitest)
pnpm test:e2e   # end-to-end tests (playwright)
```

## Content model

All content lives in `src/content` as Markdown/JSON and is type-checked via content
collection schemas. Each entry uses `<slug>.md` with a `locale` frontmatter field
(English by default). To add a language, see `docs/guides/internationalization`.
Edit files and open a pull request — Cloudflare Pages rebuilds on merge.

## Deployment

Connect the repo to Cloudflare Pages (build command `pnpm build`, output `dist`), or
deploy manually with `npx wrangler pages deploy dist`. See [SETUP.md](SETUP.md).

## License

[MIT](LICENSE)
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.