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.