Skip to content
Blume
Esc
↑↓navigate↵open⌘Jpreview
Customer stories

ChatJS moved its docs in a single AI chat.

ChatJS, the open-source foundation for AI apps, wanted polished docs without building a docs platform, and room to change them later. Blume gave it both, and the move took a single AI chat.

Pages moved in a single AI chat
71
Hours spent on docs deployment since the move
0
Francisco Moretti, creator of ChatJS, smiling in a sunlit room with a concrete wall and a brick-framed window behind him

ChatJS is an open-source foundation for building AI apps. It starts developers with a working chat application, with authentication, saved conversations, and streaming responses, then lets them choose their AI providers and add capabilities like web search, image generation, code execution, and MCP integrations as they need them. Installed tools live as editable source in the project, so every app can make the interface and behavior its own.

ChatJS is built with Next.js, React, TypeScript, and the AI SDK, and its docs cover all of it: guides, a page for every feature, the gateways and tools, the CLI, and a cookbook of patterns to copy into any project.

Looking for the balance

ChatJS's docs started on Mintlify. With the plan up for renewal in a couple of months, Francisco Moretti, ChatJS's creator, reconsidered the setup. He had found himself shaping the docs to fit the platform, and he wanted more room to customize them.

He had been at the other end before, too. He'd built a docs site of his own with Next.js, and while the control was great, getting it to feel polished was a project in itself.

Blume sat between the two: a docs site that worked from the start, with the freedom to customize or extend it later. ChatJS's docs were already Markdown, written and changed through code, so Blume fit the way Francisco already worked.

“Blume was exactly what I needed: something I could start with that just works, knowing I can customize or extend it later.”

Francisco MorettiCreator, ChatJS

The move

Francisco moved the docs on July 14, 2026, the day after Blume 1.0 came out. He handled it in a single AI chat: he pointed the agent at Blume, asked it to migrate the docs, and barely had to steer.

The content was already in a portable format, so most of the work was around it. 71 pages moved, from guides and feature docs to reference pages and cookbook recipes. The navigation moved from Mintlify's docs.json into blume.config.ts, the callouts and accordions were adapted to Blume's, and the icons and images came along.

No page changed its path, so every URL under chatjs.dev/docs kept working. A base of /docs builds the docs as a static site under that path. They deploy to Vercel as their own project from the ChatJS monorepo, and chatjs.dev routes /docs to them.

Before the switch, blume validate checked every link, and browser checks covered the rendered pages. The whole move was opened and merged the same day.

Checking the migrated pages also turned up outdated examples and links that predated Blume, and Francisco used the move to clean them up. Since then, CI checks every internal and external link whenever the docs change, and a broken one fails the check.

Fixing it in Blume

One small thing didn't match. In dark mode, the sidebar's native scrollbar stayed light: Blume switched its own colors with the theme but never told the browser, so native controls kept their default light look. Another Blume user had reported it that morning.

Francisco investigated and fixed it in Blume itself. That evening he opened a pull request that sets the browser's color-scheme to match the active theme, with tests and a changeset. It was merged within hours and released in Blume 1.0.4 the next morning, and ChatJS upgraded an hour and a half later: under 12 hours from opening the fix to running it on chatjs.dev.

It was the flexibility Francisco had been looking for. He didn't need to build a docs platform himself, but when he needed to improve this one, he could.

Room to grow

The docs have kept growing with ChatJS. They're at 82 pages now, up from 71, with new sections for tools, file storage, and the registry, and six redirects keep the addresses of pages that moved along the way.

In September, Francisco upgraded to Blume 1.6.3 and picked up features that had shipped since: an eval suite of questions ChatJS's users ask, like how to deploy to Vercel, which blume eval answers from the docs alone, and the monorepo's agent skills, which the docs now publish for coding agents to find.

The results

The move took a single AI chat and kept every URL, and the docs have run without deployment work since.

WhatNumber
Pages moved71, from guides to cookbook recipes
Pages today82
URLs changed in the move0
Blume fix, opened to deployedUnder 12 hours
Docs deployment work sinceNone

For Francisco, the value is a polished starting point that fits how he works, with the freedom to change it later. And the time it frees goes back into ChatJS.

“Since moving to Blume, I haven't had to spend time on docs deployment.”

Francisco MorettiCreator, ChatJS

The docs are live at chatjs.dev/docs, and their source is public on GitHub. To make the same move, follow the Mintlify migration guide.

Read another story.Or see every team on Blume.

Upgrade your docs with Blume.

Install today and ship a production-grade docs site in minutes. Free and open source, forever.

npx blume init