Skip to content

AnmiTaliDev/declare.js

Repository files navigation

Declare.js

A flat-file static site engine for manifests and long-form opinion essays. Built with Astro.

Features

  • Markdown-based content — no database, no CMS
  • Auto-discovery of content categories from content/ directories
  • Auto-generated Table of Contents from headings
  • LaTeX math support via KaTeX ($inline$ and $$block$$)
  • License metadata per document (text_license, image_license)
  • YAML-based site configuration
  • Minimalist serif typography

Getting Started

npm install
npm run dev

Open http://localhost:4321 in your browser.

Configuration

Edit declare.config.yaml at the project root:

title: My Site
tagline: A flat-file engine for manifests and opinion essays.
showPoweredBy: true
Option Type Description
title string Site name shown in the header
tagline string Subtitle shown below the title
showPoweredBy boolean Show or hide the "Powered by declare.js" footer

Also set your site URL in astro.config.mjs:

export default defineConfig({
  site: 'https://your-domain.com',
  // ...
});

Adding Content

Categories

Every directory inside content/ automatically becomes a section on the homepage. No code changes needed.

content/
├── manifests/       → /manifests/{slug}
├── blog/            → /blog/{slug}
└── ideas/           → /ideas/{slug}

To add a title and description to a section, create a same-named Markdown file inside the directory:

content/manifests/manifests.md   ← section meta
content/blog/blog.md             ← section meta

The meta file uses only title and description in its frontmatter — no published date.

Articles

Create a Markdown file in any content directory:

---
title: "Your Title"
description: "A short description shown on the homepage."
published: 2026-01-01
author: "Your Name"
text_license: "AGPL-3.0-only"
image_license: "CC BY 4.0"
tags: ["tag1", "tag2"]
draft: false
---

## Section One

Supports **Markdown**, `code`, and math: $E = mc^2$.

$$\int_0^\infty e^{-x}\,dx = 1$$

Drafts

Set draft: true in frontmatter to hide an article from the homepage and skip building its page.

Frontmatter Reference

Field Type Required Default Description
title string yes Document title
description string yes Short summary (homepage + meta)
published date no Publication date (ISO 8601). Omit in section meta files
updated date no Last updated date
author string no AnmiTaliDev Author name
text_license string no License for the text (e.g. CC BY-SA 4.0)
image_license string no License for images
tags string[] no [] Tag list
draft boolean no false Set true to hide from listings and builds

Project Structure

declare.js/
├── content/                  ← your content (edit freely)
│   └── {category}/
│       ├── {category}.md     ← optional section meta
│       └── {slug}.md         ← articles
├── declare.config.yaml       ← site settings (edit freely)
├── astro.config.mjs          ← Astro config (set site URL)
└── src/                      ← engine internals (do not modify)

Commands

Command Action
npm run dev Start dev server at localhost:4321
npm run build Build to ./dist/
npm run preview Preview build locally

Author

AnmiTaliDev anmitalidev@nuros.org

License

AGPL-3.0-only. See LICENSE.

About

A flat-file static site engine for manifests and long-form opinion essays. Built with Astro.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors