AstroStarter

monakit — Astro Starter Template

By monakit

MonaKit is an Astro-based multi-format content platform template that supports knowledge cards, articles, slide presentations, announcements, courses, and other content types.

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-04View source

What stands out

A quick read of the recorded project description.

01

Supports multiple content formats including knowledge cards, articles, slides, announcements, courses, and product showcases

02

Slides are based on reveal.js and support Mermaid diagrams and math formulas

03

Built-in Pagefind full-text search, RSS feeds, dynamic OG images, and sitemap

04

Courses support chapters, volumes, and slide chapters, with optional Cloudflare Stream video integration

05

Uses Astro content collections; content is written in Markdown/MDX and organized by year/month

06

Provides Biome linting and formatting scripts, plus build analysis commands

Template Details

MonaKit is a multi-format content platform template built with Astro, aimed at scenarios that need to publish multiple content forms at once. It unifies knowledge cards, long-form blog posts, reveal.js slides, announcements (Doodles), courses, and product/link showcases (Creations) into the same set of content collections. Content is written in Markdown/MDX and organized by year/month subdirectories, while courses are organized separately by course-id.

The template includes full-text search (Pagefind), RSS feeds, dynamic OG images, and a sitemap, and supports integrating video for course chapters and trailers via Cloudflare Stream. Course structure is defined by toc.md, which specifies metadata and chapter order; chapter files are sorted by numeric numbering. A chapter can be turned into reveal.js slides via the theme field in frontmatter, and standalone slide assets can be embedded in MDX using <Slide id="slug" />.

Usage limitations: The video feature depends on Cloudflare Stream, requiring you to generate signing keys and configure the relevant environment variables; CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN are only used when running the key generation script and are not involved at runtime. Product showcase data comes from src/assets/creations.json. The code is under the MIT license, but third-party assets such as demo images, fonts, and icons need separate license verification, and external services such as domains and hosting may incur costs.

AstroLauncher

Is it right for your project?

Use Cases

  • Building a personal knowledge base that publishes articles, knowledge cards, and slide presentations together
  • Creating an online course site with chapter structure and optional video
  • Publishing product and link showcase pages, along with announcements to record changelogs
  • Static content sites that need full-text search, RSS, and dynamic OG images

Suitable For

  • Front-end developers familiar with Astro and Markdown/MDX content collections
  • Creators or teams that need to mix multiple content formats within one site
  • Projects planning to use Cloudflare Stream to host course videos

Getting started & customization

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

  1. 1

    Initialize the project using the npm create astro@latest command and specifying the monakit/monakit template

  2. 2

    After installing dependencies, copy .env.example to .env and configure at least SITE_URL

  3. 3

    If course videos are needed, run scripts/generate-stream-key.ts to generate keys and fill in the Cloudflare Stream-related environment variables

  4. 4

    During build, pnpm build automatically generates the search index; you can also run pnpm build:search-index separately

  5. 5

    Third-party assets such as demo images, fonts, and icons need to be checked against their respective licenses; do not judge solely based on the MIT license

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

  • Allows free use, modification, commercial use, and distribution of this version's code.
  • 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 need to be checked against their respective licenses; do not judge solely based on the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional charges.
  • The course video feature is optional and requires generating your own signing key pair and configuring Cloudflare Stream-related environment variables to enable.
  • Using the video feature requires providing credentials such as Cloudflare account ID, API Token, Stream customer code, and signing key, which are external service dependencies.
  • The Cloudflare account ID and API Token are only needed when running the key generation script and are not involved at runtime.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

To enable video in courses, generate a signing key pair and set the following env vars

Original README

CLOUDFLARE_ACCOUNT_ID= CLOUDFLARE_API_TOKEN= CLOUDFLARE_STREAM_CUSTOMER_CODE= CLOUDFLARE_STREAM_KEY_ID= CLOUDFLARE_STREAM_PRIVATE_KEY=

Original README

CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN` are only needed to run the key generation script

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

Compiled by DeepSeek based on repository license and README ·2026-10-04. 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 · 87 / 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-05-20
Screenshot last checked
2026-10-04

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-04

Inspect the recorded source material

SHA-256: bf15ecab707ada887e31a66c3fd78967b86f6e37d34ca15072fa596e05e3fc86

2026-10-04T04:51:10.771Z

Source file / repository
# MonaKit

Multi-format content platform built with Astro, featuring knowledge cards, articles, presentations, announcements, and courses.

## Features

- **Knowledge Cards** - Research summaries with customizable themes
- **Articles** - Long-form blog content
- **Slide Presentations** - Interactive reveal.js presentations with Mermaid and math support
- **Doodles** - Release logs and announcements
- **Courses** - Structured learning with chapters, parts, and slide chapters
- **Video** - Course video support via Cloudflare Stream
- **Search** - Full-text search with Pagefind
- **Creations** - Product and link showcase
- **RSS Feed** - Auto-generated feed for blogs
- **OG Images** - Dynamic Open Graph image generation
- **Sitemap** - Auto-generated sitemap

## Tech Stack

- Astro 6 (SSR, Vercel adapter)
- React 19
- TailwindCSS 4
- Reveal.js
- Pagefind
- Biome (lint + format)

## Quick Start

```bash
npm create astro@latest my-astro-project -- --template monakit/monakit
```

## Development

```bash
pnpm install
cp .env.example .env
pnpm dev
```

### Available Scripts

```bash
pnpm dev                # Start dev server
pnpm build              # Production build (auto-builds search index)
pnpm preview            # Preview production build
pnpm build:search-index # Build search index manually
pnpm build:analyze      # Build with bundle analyzer report
pnpm check              # Type check and lint
pnpm fix                # Auto-fix issues
pnpm format             # Format files with Biome
```

## Content Structure

```
src/content/
├── cards/      # Knowledge cards (Markdown/MDX)
├── blogs/      # Blog articles (Markdown/MDX)
├── slides/     # Presentations (Markdown/MDX)
├── doodles/    # Announcements (Markdown/MDX)
└── courses/    # Courses (Markdown/MDX)
    └── <course-id>/
        ├── toc.md          # Course metadata + chapter order
        ├── 01-chapter.md   # Chapter file (text or slide)
        └── slides/         # Slide resources (embedded in chapters)
```

Content organized by `year/month` subdirectories, except courses which are organized by `course-id`.

## Courses

Each course lives in `src/content/courses/<course-id>/`:

- **`toc.md`** — course metadata (`title`, `description`, `pubDate`, `structure`, optional `video` for course trailer) and optional intro body
- **`NN-slug.md`** — chapter files, numbered for ordering; add `theme:` frontmatter to make a chapter a reveal.js slide
- **`slides/`** — standalone slide resources that can be embedded in chapter `.mdx` files via `<Slide id="slug" />`

Chapters can optionally include video via Cloudflare Stream. See [MonaKit in Action](https://www.mymona.xyz/courses/monakit-in-action) for a full walkthrough.

### Cloudflare Stream (optional)

To enable video in courses, generate a signing key pair and set the following env vars:

```bash
# Generate KEY_ID and PRIVATE_KEY (only needed once)
npx tsx scripts/generate-stream-key.ts
```

```env
SITE_URL=https://yourdomain.com

# Cloudflare Stream (optional — for video chapters and course trailers)
CLOUDFLARE_ACCOUNT_ID=
CLOUDFLARE_API_TOKEN=
CLOUDFLARE_STREAM_CUSTOMER_CODE=
CLOUDFLARE_STREAM_KEY_ID=
CLOUDFLARE_STREAM_PRIVATE_KEY=
```

Note: `CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN` are only needed to run the key generation script — they are not used at runtime.

## Product Data

All creations data is defined in `src/assets/creations.json`.
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.