About mdseal
mdseal (mdseal.dev) converts and seals documents, on a sovereign
server and under a free licence: Markdown or HTML → PDF, slide deck PDF (16:9) or PowerPoint
(PPTX), then signature and protection of the PDF. No data is sent to any external service — everything
is rendered here.
This tool was first called docme. The name changed when the seal became what mattered: converting is a commodity, sealing is not. The account below is docme’s, and it remains true — one does not rewrite an origin.
Where mdseal comes from
From two pages. RestoTrax — the restaurant software of the ecosystem — carries a help
page and an about page written in Markdown (pages/aide.md,
pages/a-propos.md), rendered on screen by @mostajs/markdown-html. On screen,
all was well. They then had to be handed to someone — an operator, an accountant, a trainer —
and a screen cannot be handed over. That need, and nothing more ambitious, produced this chain.
What was learnt along the way deserves writing down here, because it is the trap one falls into once: documentation that is written and documentation that is generated by the code are not handed over with the same tool.
| Generated by the code | Written in Markdown | |
|---|---|---|
| What it is | what the software is: composed modules, API, exports | what was thought: studies, audits, plans, decisions, articles |
| Its source | package.json, llms.txt, the file headers — never a hand | a versioned .md, written |
| On screen | @mostajs/docs-ui | @mostajs/markdown-html |
| To hand over | we regenerate it | mdseal, this very page |
docs-ui escapes everything it receives: it expects data, not prose. Handing it a
written guide would display it character by character, tags and all — that is not a shortcoming, it is
its nature. Symmetrically, a list of modules copied out by hand is wrong from the next module
onward, and nobody notices. The house rule drew its §9.bis from this, where docme is named the
canonical chain for written documentation.
Technology — composition, not reinvention
mdseal is a plain interface on top of the @mostajs/* ecosystem, assembled by
composition:
| Brick | Role |
|---|---|
@mostajs/markdown-html | Markdown → HTML (zero dependencies) |
@mostajs/doc-themes + @mostajs/palette | themes with checked contrast (source: palette.amia.fr) |
@mostajs/doc-export | orchestration (the thin core) — and, since 0.2.1, the doc-export command |
@mostajs/doc-driver-chrome | HTML → PDF (headless Chrome) |
@mostajs/doc-driver-pandoc | Markdown → PPTX (pandoc) |
@mostajs/pdf-sign + @mostajs/pdf-sign-ui | PAdES signature and AES-256 permissions (pyhanko engine) |
@mostajs/api-keys + @mostajs/subscriptions-plan | API keys, plans, quotas and invoicing |
@mostajs/i18n | French, English, Arabic — with right-to-left |
The core is dependency-free; the heavy engines (browser, pandoc, pyhanko) are interchangeable drivers — we adopt the best tool in the world for a given need, and never reinvent it. The signature is the latest example: mdseal knows neither PKCS#7 nor PAdES, it asks a module that does.
Author & licence
Designed and built by Dr Hamid MADANI <drmdh@msn.com>. Free software under the AGPL-3.0-or-later licence.