Skip to main content

What shipped in docStatic since January

· 4 min read
Andrew Owen
docStatic maintainer

In January, I wrote a technical evaluation of the development state of docStatic: what it did well, where it fell short of a commercial CCMS and where two specific gaps sat on the roadmap. Six months and over 200 commits later, it's time for an update.

Both roadmap items shipped​

In January, two areas where CCMS tools still had the edge were ease of deployment and dashboards.

For deployment, npx create-docstatic@latest my-site downloads the template, sets the project name, runs git init and installs dependencies (the "create a default repository using npm" item from the roadmap). A companion script keeps the template in sync with the main site's code, enforced in CI and the pre-commit hook, so the scaffold doesn't drift out of date the way generated starters often do.

Dashboards are no longer a proof-of-concept. The full suite includes: Content Overview, Content Reuse, Media Usage, Translation Status and Broken Links. TinaCMS liked the Media Usage dashboard so much that it implemented its own version. And that provided a style template, so the dashboards now match TinaCMS's own UI. But the most significant change is unifying ad-hoc data-loading call sites into a single shared data layer.

What's still missing​

Two limitations from January remain.

Role-based access control is still a paid TinaCloud feature, not something docStatic provides on its own.

Migration tooling (importing content out of an existing CCMS) still doesn't exist.

Unplanned features​

Delivered features that weren't on the roadmap include:

  • Vale prose linting, with a custom docStatic style (catches weasel words, em dashes, overlong sentences).
  • An MCP server, so AI assistants can query docStatic content and metadata directly instead of guessing from raw Markdown.
  • llms.txt, a manifest aimed at AI crawlers rather than search engines.
  • GitHub-flavored Markdown task lists with working checkboxes.

Structured tables​

The CALS table model (used by DocBook and DITA) is now supported: merged cells, per-column widths and fine-grained border control. Writers get a spreadsheet-style graphical editor in the CMS for merging and splitting cells, rather than hand-editing table markup and the same renderer drives both the CMS preview and the published page. See the CALS tables guide for details.

Translation​

The biggest update is to translation. The documentation is now available in German, Spanish and Japanese, in addition to English and French. The translation dashboard provides XLIFF export and import. A DeepL-backed translation script was added to export the out-of-date segments, machine-translate the prose while leaving code fences and component markup untouched and then reimport, fulfilling the promise of "translation-ops-as-code."

Code hardening​

The whole codebase now comes under Biome linting and a test suite has been added to guard against regressions.

What's next​

There are four open enhancement requests:

  • AI chatbot. This would be implemented using WebLLM as a proof of concept. It should be simple enough to substitute a commercial LLM server.
  • Manged URLs component: URLs typically don't get translated. This component would make it easy to maintain localized off-site links.
  • Analytics: A simple way to configure Matomo or Google Analytics in the Settings UI.
  • Feedback component: A like/dislike component that triggers the analytics.

Who is docStatic best for today?​

It's still best for engineer-owned teams who want a Git-native documentation platform with real non-developer creation and review. It now has a robust translation pipeline for teams publishing in more than one language. It's still the wrong choice for teams that need role-based access control or PDF. But if document migration or vendor support are requirements, then we'd love to hear from you.