Skip to main content

Bored Docs

Project site: www.boreddocs.com · install: pip install boreddocs

A free, fast, SEO- and AI-friendly static site for school board documents — agendas, minutes, and policies authored in Markdown. Modeled after mkdocs, but specialized for the way school boards actually publish information.

Bored Docs exists because the dominant paid board-portal product is expensive, hostile to search engines, and unfriendly to AI assistants. School board agendas are public records — they should look, feel, and read like the open web.

Quickstart

pip install boreddocs
boreddocs new my-district
cd my-district
boreddocs serve              # preview at http://localhost:8000

When you're ready to publish, push the repo to GitHub and the bundled GitHub Actions workflow deploys to GitHub Pages.

Repo layout (consumer side)

my-district/
├── boreddocs.yml              # site config
├── content/
│   ├── meetings/
│   │   └── 2026-04-15-regular.md
│   └── policies/
│       └── AA-school-district-legal-status.md
├── data/
│   └── policy-categories.yml
├── overrides/                 # optional: shadow the default theme
│   ├── static/img/logo.svg
│   └── templates/partials/header.html
├── requirements.txt           # boreddocs>=0.1,<0.2
└── .github/workflows/deploy.yml

A complete working example lives at examples/sample-district/.

What boreddocs build does

(The package and CLI are spelled boreddocs, one word; the project name in prose is Bored Docs.)

  1. Reads boreddocs.yml and validates it.
  2. Walks content/meetings/*.md and content/policies/*.md. Each file has YAML frontmatter (metadata) followed by Markdown body.
  3. Parses meeting bodies into a structured outline using heading conventions: # 1. Section → numbered section, ## A. Item → lettered sub-item.
  4. Renders each item's body through python-markdown with a custom ::motion extension that turns voting blocks into styled aside elements.
  5. Renders each page through Jinja2 templates from the active theme. If overrides/templates/<path> exists, it shadows the default.
  6. Copies static/ from the theme (and any overrides/static/) into _site/static/.
  7. Output lands in _site/ — fully pre-rendered HTML, ready for GitHub Pages.

The ::motion directive

Used inside meeting minutes:

## A. Approval of the April 15, 2026 Regular Meeting agenda

::motion
text: I move to approve the April 15, 2026 regular meeting agenda as presented.
made_by: Stephan Abrams
seconded_by: Bill Scarlett IV
result: Unanimously approved
votes:
  - { vote: Yes, name: Betsy Carlin }
  - { vote: Yes, name: Stephan Abrams }
::

Renders as a styled voting block.

CLI

Command What it does
boreddocs build Render the site to _site/.
boreddocs serve Build, then serve _site/ on localhost with auto-rebuild on file changes.
boreddocs new <dir> Scaffold a new district repo.
boreddocs check Validate every content file's frontmatter; non-zero exit on any error.

All commands accept --config <path> (defaults to ./boreddocs.yml).

Why a separate package

  • Independent versioning — districts pin to a major version; renderer changes don't accidentally break their site.
  • Single editor mental model — a district's repo is just markdown + a config file. No Python, no templates.
  • Reusability — every other district can adopt it for free.
  • Themability — districts can shadow individual partial templates without forking the package.

Status

Pre-1.0. Schema is stable for the duration of 0.x (breakage requires major bump + a documented schema_version migration).

License

MIT — see LICENSE.

Release files for boreddocs 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for boreddocs 0.1.4
File Size Uploaded
boreddocs-0.1.4.tar.gz 25.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for boreddocs 0.1.4
File Interpreter ABI Platform
boreddocs-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 57.2 kB

Release files / boreddocs-0.1.4.tar.gz

Download URL boreddocs-0.1.4.tar.gz
Size 25.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4c7ea69a64741d169e3025474b1f3670bf801b895294461b11f8f06b080d241c
BLAKE2b-256 checksum
How to use checksums
b35e1e202b7a5ee9de5fe9cbb49f901a69e343210ecb39e883b227ee3182717b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 4, 2026.

Transparency log

Release files / boreddocs-0.1.4-py3-none-any.whl

Download URL boreddocs-0.1.4-py3-none-any.whl
Size 32.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d5abf825de23e6abe665d2e1543e0671c2461be4ce9cc329620d65f6b8710035
BLAKE2b-256 checksum
How to use checksums
696bf12c19e3ff6af01d0f29ac70710af431ef2951b08239ff3c6a550499481c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page