Project Broadsheet

Project Broadsheet is a complete, production-grade static publication system designed for independent journalists, essayists, and editorial teams who want full control over their platform, no subscription fees, no algorithmic gatekeepers, no third-party CMS.

The full source code is available on GitHub:

View Project Broadsheet on GitHub

What you get

This is not a starter template with placeholder divs. It is a complete, production-grade publication system with every feature already built and tested:

  • 7 editorial sections with per-section collections, pagination, and RSS feeds
  • Full-text search via Pagefind with section filtering
  • Dark mode with system preference detection and no flash
  • Reader tools including reading list, highlights and annotations, download, print, and citations
  • Global display settings with 27 fonts (system + Bunny web fonts loaded on demand), theme selector, spacing controls
  • Per-page reading settings on articles and library pages: font, size, spacing, width, background, reading ruler, auto-scroll
  • Public domain library with chapter navigation, floating TOC, bookmarks, annotations, and reading progress
  • Resources hub with sub-pages for education, legal rights, personal support, and tools
  • Interactive events calendar with recurrence engine, dot-based month grid, slide-in detail panel, sidebar, keyboard navigation, URL state persistence
  • 18 submission forms via Web3Forms with hCaptcha, articles, letters, quotes, events, timeline entries, books, texts, glossary terms, trials, thought experiments, corrections, feedback, tips, contact, gallery, community groups, and music suggestions
  • Web Speech API integration, voice search, glossary pronunciation, and form dictation
  • Highlight colours, 6 colour options with WYSIWYG rich-text note editor
  • Interactive timelines, vertical alternating CSS timelines for freethought history, quotes, bookshelf, and trials
  • Full-screen showcases, screensaver-style auto-advancing displays for quotes, timeline events, trials, glossary terms, thought experiments, and bookshelf entries
  • A-Z glossary (86 terms) with sticky letter navigation, real-time search, individual term pages, and Tippy.js hover tooltips across all articles
  • Hub pages for Explore, Submit, Reader Tools, Transparency, and Legal sections
  • Daily quote bar in the masthead header with rotating quotes
  • Reading ruler, customisable thickness, colour, and style (solid/dashed/dotted/glow)
  • 4 interactive games
  • Public JSON API, every content collection exposed as JSON at /api/* with CORS enabled
  • Scheduled publishing, future-dated articles become visible automatically via daily GitHub Action
  • Editorial tools, dashboard with status/author stats, Kanban-style editorial board, content templates, proofread mode, abbreviation dictionary, saved searches
  • SPA-style navigation, pages load without full refresh; background music and global state persist across navigation
  • Persistent music player, background YouTube player that continues playing across page navigation
  • Photo gallery, nature photography with lightbox, zoom, download, and category/license/source filters
  • Reviews section, book, film, podcast, and documentary reviews with ratings
  • Instant page, prefetch on hover for instant navigation
  • Newsletter integration via Buttondown
  • SEO with JSON-LD structured data, Open Graph, sitemaps, and per-author RSS
  • Privacy-first analytics via Umami
  • Comments via Cusdis
  • Translation via GTranslate
  • Print CSS for articles and editions
  • Progressive Web App with offline support

See the full list at /features/.

Stack

  • Eleventy 3 (static site generator)
  • Nunjucks templates with Markdown content
  • Vanilla CSS with custom properties (no frameworks)
  • Vanilla JavaScript (no frameworks, no build step)
  • Bunny Fonts (privacy-friendly font CDN)
  • Cloudflare Pages for hosting

No bundler, no React, no Tailwind, no CMS. Just HTML, CSS, and JavaScript that renders fast and works everywhere.

How to use it

Site-wide configuration lives in two files: src/_data/site-settings.json (editor-facing: title, tagline, tipping URLs, newsletter config, social links — editable via Pages CMS) and src/_data/site.js (secrets and environment overrides: API keys, analytics IDs, loaded from .env or CI). Change the values and the entire site updates on the next build.

Analytics is dual-layered: Umami as the primary cookieless pageview tracker and Cloudflare Web Analytics as a secondary cookieless measurement tool.

The visual design is controlled by CSS custom properties in src/assets/css/tokens.css. Swap the colours and fonts to match your brand.

Content lives in src/content/ as Markdown files with YAML front matter. Each section has its own directory. Add a new article by creating a new .md file.

License

The code is released under the MIT License. Use it for personal projects, commercial publications, or anything else. No attribution required, though it is appreciated.

The editorial content (articles, essays, library commentary) published on The Freethinking Times is not part of the template and remains the property of its respective authors.