elixir-tools/tableau
65.1
Adequate · 18 September 2026
1.5k
lines of production code
Elixir
primary language
1
measurement over time
What this system is
Tableau is a static site generator for Elixir that converts content files into static HTML pages using a configurable build pipeline. It supports multiple template syntaxes and Markdown processing, while offering a modular extension system for features like RSS feeds, sitemaps, and tag-based navigation. The system manages content relationships through a directed acyclic graph and allows customization via YAML front-matter and environment-specific configurations.
How it got here
2021 — Initial release and core development
8 changes.
This period marks the initial release of Tableau, an Elixir-based static site generator, establishing its core architecture including the DAG-based build pipeline, configuration system, and Markdown conversion via MDEx. The work involved implementing essential features such as the tableau.build Mix task, extension hooks, and project generation templates, while simultaneously setting up comprehensive test coverage and dependency configurations.
2022–2024 — Extension system and graph architecture
6 changes.
This period focused on implementing a modular extension architecture that supports pages, posts, RSS, sitemaps, and tags, alongside introducing a graph-based node protocol for structured data handling. The work included adding an MDEx markdown converter and comprehensive test coverage for the new build tasks, extensions, and support utilities.
Features
Add MDEx Markdown Converter
A new MDExConverter module has been introduced to handle markdown parsing using the MDEx library. This converter extracts markdown configuration from the site settings and passes it to MDEx.to\_html!, enabling users to leverage MDEx-specific features and options for rendering markdown content.
lib/tableau/converters · high confidence
Initial configuration setup for Tableau and extensions
The application now includes a structured configuration system with a main \config.exs\ file that sets up the Elixir timezone database and defines default Tableau connection settings (URL and output directory). Environment-specific configurations are introduced, including a development config and a test config that explicitly enables or disables various extensions (Fail, Log, Post, RSS, Sitemap, Tag) and sets the logger level to warning for the test environment.
config · high confidence
Initial release of Tableau static site generator
This entry marks the initial release of Tableau, a static site generator for Elixir. The repository now includes the core library code, a project generator (\tableau.new\), and comprehensive documentation. Users can generate new sites using template syntaxes like HEEx, Temple, or EEx, and asset frameworks such as TailwindCSS. The generator supports features including live reloading, RSS feeds, sitemaps, and tag extensions.
(repo-wide) · high confidence
Initial release of the Tableau static site generator core
This change introduces the foundational components of the Tableau static site generator. It adds the core data structures for Pages and Layouts, a Directed Acyclic Graph (DAG) for managing content relationships, and a configuration schema that supports base paths, timezones, and markdown conversion settings. The library also implements a flexible extension system with pre-build, pre-render, pre-write, and post-write hooks, allowing users to customize the build process, insert custom pages, and generate additional content like RSS feeds. Additionally, it includes a YAML front-matter parser, a build exception handler for clearer error reporting, and a converter interface for markup processing.
lib/tableau · high confidence
New Tableau.Build Mix task for site generation
A new Mix task, \tableau.build\, has been added to handle the site build process. This task orchestrates the generation of static pages by executing a defined pipeline of extension phases: \pre\_build\, \pre\_render\, \pre\_write\, and \post\_write\. It manages the site graph, renders page content using the \Tableau.Document\ module, and writes the resulting HTML files to the output directory, while also copying static assets from the include directory.
lib/mix · high confidence
New extension system for pages, posts, RSS, and more
Tableau now supports a modular extension architecture, introducing dedicated extensions for managing content and site assets. The new Page and Post extensions allow content files with YAML frontmatter to be automatically compiled into site pages, supporting custom converters, multiple source directories, and flexible permalink templates. A Data extension enables automatic loading of YAML or Elixir scripts into template assigns, while RSS, Sitemap, and Tag extensions provide built-in support for generating feeds, search-engine sitemaps, and tag-based navigation pages. These extensions are configured via standard Tableau config and integrate into the build lifecycle via pre\_build and pre\_render phases.
lib/tableau/extensions · high confidence
Behavioural changes
Introduce Nodable protocol and Node helper for graph structure
The library now defines a \Tableau.Graph.Nodable\ protocol and an implementation for atoms, alongside a \Tableau.Graph.Node\ helper module. These additions provide a standardized way to query node metadata—such as template, type, parent, permalink, and options—by delegating to specific module functions (\\_\_tableau\type\\\, \\\_tableau\parent\\_\, etc.), laying the groundwork for the graph-based page extension system.
lib/tableau/graph · high confidence
Replace placeholder API with configurable Markdown conversion
The \Tableau\ module's \hello/0\ function has been removed and replaced with a \markdown/2\ function that converts content to HTML using MDEx. This change introduces support for global site configuration (such as URL, timezone, and output directory) and allows users to customize Markdown processing via options like converters, slugification rules, and specific MDEx extensions (e.g., tables, strikethrough, footnotes).
lib · high confidence
Test coverage
Added test coverage for Tableau core components; Added test coverage for Tableau extensions; Added test fixtures and support helpers; Added tests for the build task, extension priority, and layout rendering; Cleanup of obsolete tests and addition of test helpers.
Dependencies
Release 0.30.0 with updated dependencies and project metadata
The project has been updated to version 0.30.0, raising the minimum Elixir requirement to 1.15. The dependency list has been refreshed to include specific versions for core libraries such as mdex (0.11.1), date\_time\_parser (1.2), and tz (0.28.1), while dev dependencies like ex\_doc and styler have been added. Additionally, the mix.exs file now includes package metadata (maintainers, licenses, links) and documentation configuration for the static site generator.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 65.
Lenses
- Code Health 100
- Architecture 69
- Maturity 57
- Readiness 67
- Security 81
Changes since last survey
- 214 commits — 180 feature/other, 34 fixes
By area
- (root) — 109 commits
- lib/tableau — 64 commits
- .github/workflows — 11 commits
- lib/mix — 9 commits
- test/support — 4 commits
- example/lib — 3 commits
- lib/tableau_dev_server — 3 commits
- test/tableau — 3 commits
- example/config — 2 commits
- (repo) — 1 commit
- .github/dependabot.yml — 1 commit
- config/test.exs — 1 commit
- example/_posts — 1 commit
- example/assets — 1 commit
- lib/tableau.ex — 1 commit
Notable commits
- fix: Fix asset build
- fix: Fix deploy
- fix: Fix live_reload references in README (#58)
- fix: Fix tableau.build
- fix: fix!: improve slug generation (#51)
- fix: fix!: uri encode permalink
- fix: fix(build): capture pre_write page changes (#162)
- fix: fix(front_matter): don't fail when parsing without a body (#141)
- fix: fix(posts): pull correct config key
- fix: fix(posts,page): handle path based permalinks
- fix: fix(posts,regression): sort posts
- fix: fix(rss): convert post body (#135)
- fix: fix(rss): don't enable by default (#150)
- fix: fix(sitemap): sitemap custom tags (#124)
- fix: fix(tags): disable by default
- fix: fix: add base_path to config schema (#68)
- fix: fix: allow atom layout module names (#108)
- fix: fix: always preload modules
- fix: fix: correctly create page modules
- fix: fix: delete obsolete files (#5)
- …and 194 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
elixir-tools/tableau was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 18 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 6a6c89430113eee6b5fc5aa3140b7c9d034661d7 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.