alxshelepenok/lumen

A constantly evolving and thoughtful architecture for creating static blogs.

TypeScript

2,018

6,972 commits

updated Sep 23, 2026

See the code

README

lumen

Tests MIT license Latest release Bun runtime JSON-LD grounded

A constantly evolving and thoughtful architecture for creating static blogs, built with Astro.

Features

Minimal runtime

  • Four direct dependencies (Astro and Sentry).
  • Zero hydration and 0 KB of client JS by default.
  • Every page is rendered to plain HTML at build time (SSG).

Built for RAG and LLM indexing

  • Support for llms.txt and llms-full.txt. Generation of a text index and a condensed site summary in the root directory for quick discovery and aggregation by AI systems.
  • Direct access to Markdown sources. Every post serves clean raw Markdown (no HTML noise, layout, or scripts) at a stable URL for efficient loading into RAG context.

Grounded structured data (JSON-LD)

  • A single connected graph. WebSite, Blog, BlogPosting, WebPage, and Person nodes are explicitly linked into one knowledge network.
  • 100% consistency between the markup in the JSON-LD graph and the content actually visible on the page.
  • Stable node IDs. Canonical URLs with hash fragments (#web, #blog, #article, #person) for end-to-end data merging across pages.

Semantic tree

  • Hierarchical HTML structure with <article> for self-contained publications and <section> for logical subdivisions.
  • Logical grouping of metadata using <header> and <footer> tags within <article> and <section> to separate it from the main content.
  • Heading tags (<h2>-<h6>) are chosen in strict accordance with section nesting depth to form a clear table of contents.
  • A correct accessibility tree.
  • Standardized time markup.

Crawl efficiency and SEO

  • Explicit canonicalization on every page.
  • Hierarchical URL structure with hyphens separating words.
  • Automatically generated sitemap.xml and robots.txt at build time.

User experience optimization

  • Zero cumulative layout shift (CLS).
  • Asynchronous loading of visual assets (decoding="async" and loading="lazy").
  • Images are converted to the modern WebP format at build time.
  • Automatic Atom feed generation for subscribers and aggregators.

Quick Start

$ bun install
$ bun run start

Sponsors

Special thanks to our sponsors and partners for supporting the project.

BrowserStackSentry

Contributors

Thanks go to these wonderful people!

License

The MIT License (MIT)

Copyright (c) 2016-2026 Alex Shelepenok

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

astro
blog
jamstack
json-ld
semantic-html
semantic-markup
semantic-releases
sentry
seo
typescript

alxshelepenok/lumen

A constantly evolving and thoughtful architecture for creating static blogs.

TypeScript

2,018

6,972 commits

updated Sep 23, 2026

See the code

README

lumen

Tests MIT license Latest release Bun runtime JSON-LD grounded

A constantly evolving and thoughtful architecture for creating static blogs, built with Astro.

Features

Minimal runtime

  • Four direct dependencies (Astro and Sentry).
  • Zero hydration and 0 KB of client JS by default.
  • Every page is rendered to plain HTML at build time (SSG).

Built for RAG and LLM indexing

  • Support for llms.txt and llms-full.txt. Generation of a text index and a condensed site summary in the root directory for quick discovery and aggregation by AI systems.
  • Direct access to Markdown sources. Every post serves clean raw Markdown (no HTML noise, layout, or scripts) at a stable URL for efficient loading into RAG context.

Grounded structured data (JSON-LD)

  • A single connected graph. WebSite, Blog, BlogPosting, WebPage, and Person nodes are explicitly linked into one knowledge network.
  • 100% consistency between the markup in the JSON-LD graph and the content actually visible on the page.
  • Stable node IDs. Canonical URLs with hash fragments (#web, #blog, #article, #person) for end-to-end data merging across pages.

Semantic tree

  • Hierarchical HTML structure with <article> for self-contained publications and <section> for logical subdivisions.
  • Logical grouping of metadata using <header> and <footer> tags within <article> and <section> to separate it from the main content.
  • Heading tags (<h2>-<h6>) are chosen in strict accordance with section nesting depth to form a clear table of contents.
  • A correct accessibility tree.
  • Standardized time markup.

Crawl efficiency and SEO

  • Explicit canonicalization on every page.
  • Hierarchical URL structure with hyphens separating words.
  • Automatically generated sitemap.xml and robots.txt at build time.

User experience optimization

  • Zero cumulative layout shift (CLS).
  • Asynchronous loading of visual assets (decoding="async" and loading="lazy").
  • Images are converted to the modern WebP format at build time.
  • Automatic Atom feed generation for subscribers and aggregators.

Quick Start

$ bun install
$ bun run start

Sponsors

Special thanks to our sponsors and partners for supporting the project.

BrowserStackSentry

Contributors

Thanks go to these wonderful people!

License

The MIT License (MIT)

Copyright (c) 2016-2026 Alex Shelepenok

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

astro
blog
jamstack
json-ld
semantic-html
semantic-markup
semantic-releases
sentry
seo
typescript

Significant stargazers

Erez Rokah

206 followers · starred Jul 2019

Tim Nguyen

249 followers · starred Nov 2019

Nitish Tiwari

142 followers · starred Jan 2020

Sander Mathijs van Veen

35 followers · starred Jan 2025