Public documentation

The section you are reading: how it is written from the panel in two languages, and how it is published.

The section you are reading is a feature of the template. Your product has the same one, empty, ready for you to write yours.

The underlying idea: documentation is written from the panel, not in the code. Publishing a new page should not require a deployment, or knowing markdown by heart, or interrupting whoever writes the code.

How you write it

The panel has a Documentation tab. Each page has two language tabs, English and Spanish, over the same form, and below the save button you always see what is still missing before it can be published.

As you type, the public address is worked out from the title and you see where the page will live. You can write it by hand if you want a different one.

You do not lose what you are typing. A local copy is saved as you write, so if the screen reloads or the connection drops, your text is there when you come back. The copy is only discarded once the server confirms it saved.

It publishes whole, or not at all

A page can only be published if it is complete in both languages: address, title, description and content.

This is not rigidity for its own sake. Publishing half of it leaves the visitor in the other language facing a page that does not exist, and search engines with a language signal pointing at nothing. It is one of the costliest mistakes in search visibility and one of the least noticed, because whoever publishes usually only looks at their own language.

Translated addresses

Addresses change with the language, not just the text:

  • yourdomain.com/documentacion/arquitectura
  • yourdomain.com/en/documentation/architecture

The words in the address are a ranking signal in each market, and someone searching in English does not click a Spanish address.

If you rename a published page, the old address does not die. It is kept and keeps redirecting to the new one, so links other people have posted and whatever search engines have indexed do not break.

Static, and up to date

Pages are generated statically: the visitor receives ready-made HTML, waiting on no query. And when you save from the panel, they revalidate themselves: the page in both languages, both indexes and the sitemap.

The best of both: the speed of a static site and the comfort of a content manager, without deploying every time.

The documentation collection is entirely closed to the browser. It is not that only published pages can be read: the browser has no access to anything. The pages are built by the server. That way a draft cannot leak even through a query typed by hand in the console.

Search visibility happens on its own

With nobody having to remember anything, every published page emits:

  • JSON-LD structured data: the article, the organisation with its identity, the breadcrumb trail, and the image if it has one.
  • A sitemap.xml entry, with the real date of the last edit, and with the relationship between the two languages declared.
  • A line in llms.txt, the file language models read to learn what is on your site.

Images ask from the panel for what a search engine needs: alt text, caption, title and dimensions. Without alt text the page cannot be published, because an image without it is invisible to anyone who cannot see and to anyone indexing. Without dimensions either, because the browser reserves no space and the page jumps as it loads.

It grows with your products

Every page belongs to a product. Today you may have one; the day you have three, each one's documentation lives separately and the index for language models groups them on its own, with nothing to migrate and no already-ranking addresses to change.

That field exists from day one for exactly that reason: adding it later would mean touching every page and changing addresses that had already earned their positions.

A verifier watches it

npm run verify:all includes a check that does not look at the code, it looks at your pages. It fails if a published one was left untranslated, if two fight over the same address, if an image has no alt text, or if a page ended up outside the menu and is therefore unreachable.

None of that shows up at build time, and all of it breaks silently.