AstroStarter

stargarden — Astro Starter Template

By sustanza

StarGarden is an Astro-based starter template for Markdown content sites, including a blog post and static page collection, theme switching, search, RSS, and SEO metadata.

Explore the design

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

1 previews
Author preview
Author-provided previewTop of page

Preview provided in the project README.

One original preview is available. Open the full image to inspect the design.

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-05View source

What stands out

A quick read of the recorded project description.

01

Content is organized in Markdown, with posts and static pages in src/content/posts/ and src/content/pages/ respectively, and the schema defined in src/content.config.ts

02

Built-in Tailwind and DaisyUI light corporate and dark business themes; first visits follow system preference, and switches are saved in localStorage

03

A Pagefind search index is generated at build time, with mobile and desktop search interfaces

04

The BaseHead component centrally outputs SEO metadata such as OpenGraph, Twitter Card, canonical, and JSON-LD Organization

05

Provides a sitemap, dynamic robots.txt that follows the site configuration, and /rss.xml with full-text HTML and cover image enclosures

06

Includes Vitest unit tests, Playwright end-to-end smoke tests, and a Prettier formatting script

Template Details

StarGarden is an Astro starter template released by sustanza on GitHub under the MIT license, positioned as an out-of-the-box static site starting point driven by Markdown content. The repository provides an author preview image and is listed on the official Astro themes page with an online demo URL.

The template includes a content collection structure: src/content/posts/ holds articles and their cover images, src/content/pages/ provides static pages such as About, Privacy, TOS, and FAQ in the form <slug>/index.md, and the collection schema is defined in src/content.config.ts. The component layer includes BaseHead, Navbar, Footer, ThemeToggle, and Landing; the page layer includes the homepage, post list, dynamic slug routes, 404, robots.txt, and rss.xml. Styling uses Tailwind and DaisyUI, offering a light corporate theme and a dark business theme. First visits follow prefers-color-scheme, and user switches are stored in localStorage.

Features also include view transitions via ClientRouter, link prefetching on hover, a Pagefind search index generated at build time, hand-written BaseHead SEO output (OpenGraph, Twitter Card, canonical, JSON-LD Organization), a sitemap and dynamic robots.txt that follow the site configuration, an RSS feed that outputs full-text HTML and cover image enclosures, Expressive-code syntax highlighting that follows data-theme for light and dark modes, and reading time and heading anchors. On the engineering side, it includes Vitest unit tests, Playwright end-to-end smoke tests, and a Prettier formatting script.

There are several explicit usage limitations: Pagefind indexes the built HTML, so under npm run dev the search box is visible but returns no results; you must build first or use the preview:search script. The custom 404 page relies on the host automatically returning 404.html with a 404 status; self-hosted static servers such as nginx may require additional configuration. Local Markdown image paths inlined in RSS content cannot be resolved by feed readers and must be changed to absolute paths under public/ or https URLs.

AstroStarter

Is it right for your project?

Use Cases

  • Personal blogs that write posts in Markdown and need a post list, detail pages, and RSS output
  • Sites that need static pages such as About, Privacy, TOS, and FAQ to coexist with posts
  • Static sites that want built-in light/dark theme switching, site search, and basic SEO metadata
  • Deployment on platforms such as Cloudflare Pages, Netlify, or Vercel that automatically return 404.html with a 404 status

Suitable For

  • Developers familiar with Astro and Markdown content collections who want to start from an existing structure
  • Teams that need template code they can freely modify and use commercially under the MIT license
  • Developers who accept running the search index on the build output and are willing to verify search locally via the script workflow

Getting started & customization

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

  1. 1

    Can be created with npm create astro@latest -- --template sustanza/stargarden, or by git clone followed by npm install and npm run dev; the default address is http://localhost:4321/

  2. 2

    After forking, first modify SITE_TITLE and SITE_DESCRIPTION in src/consts.ts, the site field in astro.config.mjs, the contact information in Footer.astro, and public/favicon.svg

  3. 3

    Pagefind search returns no results under npm run dev; run npm run build first, or use npm run preview:search to build and preview in one step

  4. 4

    Inline Markdown images in RSS content must be changed to absolute paths under public/ or https URLs, otherwise feed readers cannot resolve them

  5. 5

    The custom 404 page may require additional configuration on self-hosted static servers such as nginx to return the correct 404 status code

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

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

Must comply with when using

  • You may use, modify, use commercially, and distribute the code of this version for free.
  • 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

  • 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.
  • Pagefind indexes the built HTML, not the source Markdown. In development mode (npm run dev), the search box renders but returns no results until npm run build has been run at least once.
  • To test search locally, use the npm run preview:search script, which builds and previews in one step; using the development server directly cannot verify search functionality.
  • The custom 404 page relies on the host automatically returning 404.html with a 404 status. Cloudflare Pages, Netlify, and Vercel work out of the box; self-hosted static servers such as nginx may require explicit configuration to return the correct status code.
  • Local Markdown image paths inlined in RSS content cannot be resolved by feed readers. To display body images in the feed, they must be hosted under public/ and referenced with absolute paths, or use https URLs.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Pagefind indexes built HTML, not source markdown. The search input renders in dev mode but returns no results until you've run `npm run build` at least once.

Original README

Use `npm run preview:search` to test search locally — it builds and previews in a single step.

Original README

Hosts that auto-serve `404.html` with a 404 status (Cloudflare Pages, Netlify, Vercel) work out of the box. Self-hosted nginx or other static servers may need explicit configuration to return the right status code.

Original README

**Inline markdown images in post bodies** (e.g. `![alt](./img.png)`) are local-only paths that won't resolve in subscribers' readers — host body images in `public/` with absolute paths or reference them by `https://` URL if you need them in the feed.

Original README
https://github.com/sustanza/stargarden/blob/main/LICENSEhttps://github.com/sustanza/stargarden/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-05. 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 · 79 / 100
Technologies
Astro
Website type
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-10-05
Screenshot last checked
2026-10-05

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.

Review declaration: [email protected] · 2026-10-06

Inspect the recorded source material

SHA-256: 0fa6770df16005fddbe9b25ac8dfe4a6d61041eca33a248d7390a88a8793fa90

2026-10-05T15:19:38.806Z

Source file / repository
# 🚀 StarGarden Astro Theme

Welcome to the future, traveler — where the splendor of the Atomic Age meets modern Astro web development. **StarGarden** is your trusty rocket for launching simple, markdown-powered websites into cyberspace with unmatched style and efficiency.

![StarGarden Theme](./src/assets/landing-hero.png)

## 🌐 Live Demo

Experience StarGarden in orbit at [stargarden.pages.dev](https://stargarden.pages.dev/).

## 🛠️ Initiate Launch Sequence

Two launch paths. Pick whichever fits your mission profile.

### Option A — clone via Astro's official starter command

```bash
npm create astro@latest -- --template sustanza/stargarden
```

### Option B — fork or clone manually

```bash
git clone https://github.com/sustanza/stargarden.git my-site
cd my-site
npm install
npm run dev
```

Then open `http://localhost:4321/` in your favorite browser.

## 📁 Project Structure

```
.
├── astro.config.mjs        # Astro config: integrations, markdown plugins, site URL
├── src/
│   ├── consts.ts           # SITE_TITLE + SITE_DESCRIPTION — edit when forking
│   ├── components/         # BaseHead, Navbar, Footer, ThemeToggle, Landing
│   ├── layouts/Layout.astro
│   ├── pages/              # index.astro, posts/, [...slug].astro, robots.txt.ts, rss.xml.ts, 404.astro
│   ├── content.config.ts   # Collection schemas (posts + pages)
│   ├── content/
│   │   ├── posts/          # Co-located markdown + cover images
│   │   └── pages/          # About, Privacy, TOS, FAQ (and your own)
│   ├── assets/             # Logo, hero, icons (inline SVG)
│   ├── plugins/            # remark-reading-time
│   ├── scripts/            # Theme controller
│   └── styles/global.css   # Tailwind + DaisyUI imports, Pagefind overrides
├── public/                 # favicon
├── e2e/                    # Playwright smoke tests
└── __tests__/              # Vitest unit tests
```

## 🛰️ Customization Checklist

When you fork this template, the handful of files you'll edit first:

1. **`src/consts.ts`** — set `SITE_TITLE` and `SITE_DESCRIPTION`.
2. **`astro.config.mjs`** — change `site:` to your deployed URL (drives canonical, RSS, sitemap, robots).
3. **`src/components/Footer.astro`** — swap the placeholder email, YouTube handle, and GitHub link for your own.
4. **`public/favicon.svg`** — replace with your favicon.
5. **`src/content/posts/`** — replace or supplement the demo astronomy posts with your own. Frontmatter schema lives in `src/content.config.ts`.
6. **`src/content/pages/`** — edit `about`, `privacy`, `tos`, `faq`, or add new pages following the same `<slug>/index.md` pattern.

## 🌌 Feature Control Panel

- **Astro 6** with content collections + `astro:assets` image optimization.
- **Tailwind CSS v4 + DaisyUI v5** — light (`corporate`) + dark (`business`) themes, honors `prefers-color-scheme` on first visit, persists user toggle in localStorage.
- **View Transitions** via `<ClientRouter />` for SPA-style navigation.
- **Link prefetch** (hover strategy) for snappy clicks.
- **Pagefind search** indexed at build time; integrated mobile + desktop UI.
- **SEO** via a hand-rolled `BaseHead.astro`: OpenGraph, Twitter Card, canonical, JSON-LD Organization — all emitted on every page.
- **Sitemap + dynamic `robots.txt`** that auto-tracks your `site:` config.
- **RSS feed** at `/rss.xml` with full post HTML and cover-image enclosures.
- **Expressive-code** syntax highlighting with paired light/dark themes that follow DaisyUI's `data-theme`.
- **Reading time** + clickable heading anchors on every post.
- **Vitest** unit tests + **Playwright** end-to-end smoke tests.

## 📜 Available Scripts

| Script                   | What it does                                                                             |
| ------------------------ | ---------------------------------------------------------------------------------------- |
| `npm run dev`            | Astro dev server on `http://localhost:4321/` (Pagefind search will be empty — see below) |
| `npm run build`          | Production build into `dist/`, including Pagefind index                                  |
| `npm run preview`        | Serve the built `dist/`                                                                  |
| `npm run preview:search` | Build + preview in one step — use this to test Pagefind search locally                   |
| `npm run test`           | Run Vitest unit tests                                                                    |
| `npm run test:e2e`       | Run Playwright end-to-end tests (boots dev server)                                       |
| `npm run test:ci`        | Build then run Playwright against the production preview                                 |
| `npm run format`         | Format the repo with Prettier                                                            |
| `npm run format:check`   | Verify formatting without writing — CI gate                                              |

## ⚠️ Known Caveats

### Pagefind search is empty under `npm run dev`

Pagefind indexes built HTML, not source markdown. The search input renders in dev mode but returns no results until you've run `npm run build` at least once. Use `npm run preview:search` to test search locally — it builds and previews in a single step.

### Custom 404 page depends on your host

`src/pages/404.astro` builds to `dist/404.html`. Hosts that auto-serve `404.html` with a 404 status (Cloudflare Pages, Netlify, Vercel) work out of the box. Self-hosted nginx or other static servers may need explicit configuration to return the right status code.

### RSS body images won't resolve in feed readers

The RSS feed at `/rss.xml` ships each post's full rendered HTML in `<content:encoded>` plus an `<enclosure>` for the cover image. The cover image enclosure uses absolute URLs and resolves correctly. **Inline markdown images in post bodies** (e.g. `![alt](./img.png)`) are local-only paths that won't resolve in subscribers' readers — host body images in `public/` with absolute paths or reference them by `https://` URL if you need them in the feed.

## 📡 License

StarGarden flies under the [MIT License](LICENSE). Freedom to innovate, explore, and customize — fully endorsed by your friendly local space authority.

## 🤝 Contributing

See [CONTRIBUTORS.md](./CONTRIBUTORS.md). Issues and PRs welcome.

---

Godspeed, future-makers, and happy exploring!
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.