AstroReactDocumentation

semantic-docs — Astro Documentation Template

By llbbl

An Astro-based documentation theme with built-in semantic vector search powered by libSQL/Turso, including static article pages and a server-side search endpoint.

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

What stands out

A quick read of the recorded project description.

01

Astro documentation theme with statically generated article pages and a server-rendered search endpoint

02

Built-in semantic search, with the index provided by @logan/libsql-search and libSQL/Turso

03

Markdown content organized into sidebar groups by folder, with frontmatter supporting title, tags, description, and order

04

Uses Cloudflare Workers AI's bge-m3 embedding model by default, with an index dimension of 1024

05

Provides an offline embedding service that can run the indexing and search flow without any account

06

Includes CI, Codecov, and Release badges; the repository uses the MIT license

Template Details

semantic-docs is an Astro documentation theme that puts static documentation pages and semantic search in the same project. Search is provided by @logan/libsql-search, and the content index is stored in libSQL/Turso, so there is no need to connect a separate hosted search service.

Content is stored as Markdown under the ./content directory and organized into sections by folder: folders become sidebar groups, frontmatter can define title, tags, description, and order, and folder order is configured in src/config/nav.ts. The theme generates sidebar navigation and article tables of contents from the content. Article pages are static, while search goes through a server-rendered endpoint.

Indexing and search depend on embedding vectors. By default it uses Cloudflare Workers AI's @cf/baai/bge-m3 model, with the index named articles_cf_bgem3_1024 and 1024 dimensions, so CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN must be set; the indexed text and every search query are sent to Cloudflare. The repository also provides an offline embedding service that can run the entire flow without any account, but its vectors are a hashed bag of words rather than a model, so it is only for verifying that the flow runs and cannot be used to judge search quality.

The runtime requires Node.js >=22.13.0 and pnpm 11. The local development path does not depend on Turso credentials; when a remote libSQL/Turso database is needed, switch to the .env-driven commands described in the documentation.

AstroReactDocumentation

Is it right for your project?

Use Cases

  • Adding semantic search to a Markdown documentation site without introducing a separate hosted search product
  • Astro projects that need to control their own documentation layout, content organization, and deployment approach
  • Wanting to first verify locally, without credentials, that the indexing and search flow runs
  • Needing to store the content index in libSQL/Turso and manage it yourself

Suitable For

  • Developers building documentation sites with Astro
  • Teams that want semantic search in their documentation rather than keyword matching alone
  • Projects willing to configure Cloudflare Workers AI or self-host an embedding service
  • Users who need an MIT-licensed documentation theme they can modify and distribute themselves

Getting started & customization

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

  1. 1

    Requires Node.js >=22.13.0 and pnpm 11.

  2. 2

    After cloning the repository, run pnpm install, pnpm db:init:local, pnpm index:local, and pnpm dev; by default it is available at http://localhost:4321.

  3. 3

    When using Cloudflare Workers AI, set CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN in .env; both indexed and search text are sent to Cloudflare.

  4. 4

    Without credentials, you can run pnpm embeddings:offline in another terminal and point OFFLINE_EMBEDDINGS_BASE_URL to the local service; these offline vectors are a hashed bag of words and are only for verifying the flow.

  5. 5

    When switching to a remote libSQL/Turso database, use the .env-driven commands described in the documentation.

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 that external services or third-party assets are free.

Must comply with when using

  • The code of this version may be used, modified, used commercially, and distributed free of charge.
  • 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 own 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.
  • Default indexing and search depend on Cloudflare Workers AI, and CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN must be configured for indexing and search to run.
  • The indexed text and every search query are sent to the external Cloudflare service.
  • The offline embedding service's vectors are a hashed bag of words rather than a real model, so they can only verify that the flow runs and cannot be used to evaluate search quality.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

indexing and search both call Cloudflare Workers AI, so `CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN` must be set before `pnpm index:local`.

Original README

Text you index and every search query are sent to Cloudflare.

Original README

Its vectors are a hashed bag of words rather than a model, and live in their own table — good enough to prove the pipeline runs, and not a basis for judging search quality.

Original README
https://github.com/llbbl/semantic-docs/blob/main/LICENSEhttps://github.com/llbbl/semantic-docs/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 · 92 / 100
Technologies
Astro · React
Website type
Documentation
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-03
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-05

Inspect the recorded source material

SHA-256: 8167c3215330ce395e300a0f678608734246212ea042a4ae20c8fe077b94b220

2026-10-05T03:29:45.213Z

Source file / repository
# semantic-docs

[![Coverage](https://img.shields.io/codecov/c/github/llbbl/semantic-docs?label=coverage)](https://codecov.io/gh/llbbl/semantic-docs) [![CI](https://github.com/llbbl/semantic-docs/actions/workflows/ci.yml/badge.svg)](https://github.com/llbbl/semantic-docs/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/llbbl/semantic-docs)](https://github.com/llbbl/semantic-docs/releases)

`semantic-docs` is an Astro documentation theme with built-in semantic search powered by [`@logan/libsql-search`](https://github.com/llbbl/libsql-search). It gives you static docs pages, a server-rendered search API, and a libSQL/Turso-backed content index without adding a separate hosted search product.

Use it when you want:

- semantic search over Markdown content with a small operational footprint
- a docs site you can ship quickly without giving up control of layout, content, or deployment
- a lightweight alternative to bolting on a hosted search product

## What You Get

- Semantic search in the header, backed by libSQL/Turso
- Static article pages with a server-rendered search endpoint
- Sidebar navigation and table of contents generated from your content
- A local development path that works without Turso credentials

## Quick Start

Requires Node.js `>=22.13.0` and pnpm `11`.

```bash
git clone https://github.com/llbbl/semantic-docs.git
cd semantic-docs
pnpm install
pnpm db:init:local
pnpm index:local
pnpm dev
```

Open `http://localhost:4321`.

The local path works without Turso credentials, but indexing and search both
call Cloudflare Workers AI, so `CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN`
must be set before `pnpm index:local`. Copy `.env.example` to `.env` to fill them
in. The current repo defaults to the `articles_cf_bgem3_1024` index at 1024
dimensions, the fixed width of `@cf/baai/bge-m3`. When you want a remote
libSQL/Turso database, switch to the `.env`-driven commands in the docs.

Text you index and every search query are sent to Cloudflare.

### Without credentials

To run the whole pipeline with no accounts at all, start the bundled offline
embedding service in a second terminal and point the app at it:

```bash
pnpm embeddings:offline
OFFLINE_EMBEDDINGS_BASE_URL=http://127.0.0.1:8788/v1 pnpm db:init:local
OFFLINE_EMBEDDINGS_BASE_URL=http://127.0.0.1:8788/v1 pnpm index:local
OFFLINE_EMBEDDINGS_BASE_URL=http://127.0.0.1:8788/v1 pnpm dev
```

This is what CI uses, so fork and Dependabot pull requests exercise indexing,
prerendering, and search. Its vectors are a hashed bag of words rather than a
model, and live in their own table — good enough to prove the pipeline runs, and
not a basis for judging search quality.

## Documentation

- [Docs index](./docs/README.md)
- [Setup and indexing](./docs/GETTING_STARTED.md)
- [Deployment notes](./docs/DEPLOYMENT.md)
- [Project reference](./docs/REFERENCE.md)
- [Security considerations](./docs/SECURITY.md)
- [Just task runner](./docs/just.md)

## Content Shape

Store Markdown under `./content` using folder-based sections:

```text
content/
├── getting-started/
│   └── intro.md
├── guides/
│   └── deployment.md
└── reference/
    └── api.md
```

Folders become sidebar groups, and frontmatter can define `title`, `tags`,
`description`, and `order`. Folder order is configured in `src/config/nav.ts`.

## Development Checks

```bash
pnpm format
pnpm lint
pnpm exec tsc --noEmit
pnpm test
```

## License

MIT
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.

AnvilWiki

AnvilWiki

AnvilWiki is an Astro static Wiki template for game guide and compendium sites, with a built-in AI content workflow and monetization components. It outputs static pages by default and deploys on Cloudflare Pages, emphasizing zero server cost and out-of-the-box performance.

Astro · Game Site

starlight-theme-rapide

starlight-theme-rapide

starlight-theme-rapide is an Astro Starlight documentation site theme inspired by the Visual Studio Code Vitesse theme, offering dark and light modes and released under the MIT license.

Astro · Documentation

CelestialDocs

CelestialDocs

CelestialDocs is an Astro-based documentation platform template that maintains documentation, blog, and product pages in a single repository through a multi-collection architecture.

Astro · Documentation

astro-big-doc

astro-big-doc

astro-big-doc is an Astro-based documentation site theme that renders standard Markdown and automatically generates a hierarchical menu and table of contents from the file directory structure with zero configuration.

Astro · Documentation

stellar

stellar

Stellar is a modern, type-safe documentation theme for Astro, suited for technical documentation sites written in Markdown or MDX. It offers dark mode, type-safe i18n, fuse.js local search, Tailwind styling, the View Transitions API, Shiki code highlighting, and custom import paths.

Astro · Documentation

starlight-theme-black

starlight-theme-black

starlight-theme-black is an Astro Starlight theme by adrian-ub that replaces the default look with a black palette, green accent (#22c55e), and editorial layout inspired by shadcn documentation.

Astro · Documentation