Présentation de Htmlpress, le générateur de sites statiques HTML-firstVoir l'annonce

Htmlpress, générateur de sites statiques HTML-first

Htmlpress est un générateur de sites statiques HTML-first pour humains et agents, disponible pour Python, TypeScript et Rust : du HTML ou Markdown, un site.

Evgeny Karev4 min de lecture

capturehtmlpress.dev
Un tableau de bord énergétique construit avec htmlpress à partir d’une simple page HTML : cartes de chiffres, histogramme empilé et graphique en anneau, entourés de la barre latérale, de la navigation et de la table des matières htmlpress

Introduction

Htmlpress est un générateur de sites statiques HTML-first. Écrivez des pages HTML, ou du Markdown, où qu’elles se trouvent dans votre projet, et htmlpress en fait un seul site. Chaque page garde son propre balisage, et htmlpress y ajoute une mise en page, un thème, une navigation et un serveur de développement à rechargement automatique. Ni framework ni langage de templates : vous, ou votre agent de code, écrivez simplement les pages. Et il est disponible aussi bien pour les développeurs Python que TypeScript ou Rust : un seul binaire Rust, installé avec pip, npm ou cargo.

Pourquoi un générateur de plus

La plupart des outils de documentation exigent d’abord d’apprendre une stack : un framework JavaScript, un dialecte de composants comme MDX, un langage de templates, une configuration de build. C’est beaucoup de surface à apprendre pour une personne, et encore plus d’occasions de se tromper pour un agent.

Htmlpress prend le chemin inverse. Une page est du HTML sémantique ou du Markdown simple — les formats que les agents connaissent mieux que n’importe quel langage de templates — et le thème habille les éléments eux-mêmes : titres, tableaux, blocs de code, <details> et <figure> s’affichent correctement sans aucune classe, en mode clair comme en mode sombre. Moins une page offre de choix, plus toutes les pages ressemblent à un seul site.

Ce que vous obtenez

  • Écrivez simplement du HTML — une page est n’importe quel fichier .html, document complet ou simple fragment, dont les balises <title> et <meta> sont les métadonnées ; un fichier .md avec frontmatter fonctionne aussi
  • Des pages venues de partout — par défaut, toutes les pages du dossier ; les globs include et exclude les prennent n’importe où dans un dépôt, pour que la documentation vive à côté du code et qu’un CHANGELOG.md ou les fichiers SKILL.md que vous tenez déjà rejoignent le site
  • Éléments enrichis — encadrés, onglets, étapes, cartes, badges, arborescences de fichiers, tableaux triables, terminaux, onglets de gestionnaires de paquets, diagrammes Mermaid et intégrations, tous sous forme d’éléments personnalisés htmlpress-*
  • Navigation incluse — une barre latérale organisée par dossiers, un fil d’Ariane, une table des matières, des liens précédent/suivant et un lien « Modifier sur GitHub »
  • Documentation, blog et changelog — découpez un site en sections, chacune avec son onglet et sa navigation : une documentation regroupée par dossier dans la barre latérale, un blog d’articles datés, les plus récents en premier, avec pages d’étiquettes et flux RSS, et un changelog avec une page par version d’un changelog Markdown
  • Multilingue — des traductions à côté des originaux, un sélecteur de langue et l’interface en sept langues intégrées
  • Personnalisable — des tokens --htmlpress-* pour le thème, et la mise en page, les styles et les composants peuvent être extraits dans un dossier .htmlpress/ et remplacés fichier par fichier
  • Conçu pour les agents — chaque build publie une copie Markdown de chaque page, llms.txt et vos agent skills, et chaque commande parle JSON
  • Web components et CSS — chaque élément enrichi est un web component natif et chaque style du CSS pur, isolé avec @scope, sans runtime de framework dans le navigateur
  • Python, TypeScript et Rust — disponible aussi bien pour les développeurs Python, TypeScript que Rust, sur PyPI, npm et crates.io, sous la forme d’un seul binaire Rust ; aucun runtime ni dépendance, et le résultat est un site statique avec sitemap.xml, robots.txt et une page 404, prêt pour n’importe quel hébergeur

Une page

Une page fixe son titre, sa description et son ordre en quelques balises, puis passe directement au contenu :

<title>Getting Started</title>
<meta name="description" content="Set up the project in five minutes." />
<meta name="order" content="1" />

<h1>Getting Started</h1>
<p>Welcome!</p>

La même page en Markdown porte ces valeurs dans son frontmatter. La configuration est facultative. Un htmlpress.yaml à la racine du projet définit le titre et la description du site, et ses globs include indiquent où se trouvent les pages :

title: My docs
description: Documentation for my project
include: [docs/**/*.html, docs/**/*.md]

L’essayer

Chaque canal distribue le même binaire Rust dans la même version : choisissez le gestionnaire de paquets que votre projet utilise déjà.

curl -fsSL https://htmlpress.dev/install.sh | sh
npm install --global gethtmlpress
pip install htmlpress
cargo install htmlpress

Ensuite, tout le cycle tient en quatre commandes :

htmlpress start    # dev server with live reload at http://localhost:8000
htmlpress build    # production build to .htmlpress/build/
htmlpress preview  # serve the production build locally
htmlpress clear    # remove .htmlpress/build/

Agent skills

Htmlpress fournit six Agent Skills qui apprennent aux agents de code comme Claude Code, Cursor et Codex le fonctionnement d’un projet : le contrat des pages, les composants, les clés de configuration, la personnalisation du thème, le déploiement et la vérification de leur propre travail. Une fois installées, vous n’avez plus rien de tout cela à expliquer dans le prompt.

La suite

Htmlpress est open source sous licence MIT, et sa propre documentation sur htmlpress.dev est construite avec lui. Essayez-le, ouvrez une issue pour partager vos retours et ajoutez une étoile sur GitHub pour aider le projet à grandir — https://github.com/datisthq/htmlpress

Ce que nous construisons

De la couche de données à l'interface : recherche, intégrations, traitements en arrière-plan, et l'infrastructure pour que tout continue de tourner.

Applications web full-stack · API typées · Workflows durables · Orchestration de conteneurs

L'outil interne dont votre secteur a réellement besoin — leads, affaires, stock, facturation, permissions, piste d'audit. Construit autour de votre façon de travailler plutôt qu'autour d'un modèle.

Bases de données transactionnelles · Identité et accès · API typées · Applications web full-stack

iOS et Android depuis une seule base de code, partageant leurs types avec votre backend pour que les deux ne divergent pas. Par les stores, ou over-the-air.

Mobile et bureau · API typées · Identité et accès

Des sites prérendus, rapides, qui s'affichent instantanément et ne coûtent presque rien à faire tourner. Un contenu que vous pouvez modifier vous-même, dans autant de langues que nécessaire.

Applications web full-stack · Design systems · Internationalisation · Plateforme edge

Exemples de projets

capturemycarro.app
Le moteur de recherche automobile Mycarro tel qu'il tourne aujourd'hui, sur ses annonces portugaises en ligne.

Mycarro — moteur de recherche auto et CRM concessionnaires

Une place de marché de voitures d'occasion en ligne au Portugal. Une recherche grand public sur des annonces collectées dans tout le marché, un back-office concessionnaires pour les leads, le stock et la facturation, et une application mobile — construits de bout en bout.

nous l'avons construit

sous NDA
Un travail que nous ne pouvons pas montrer
ND

NDA — MVP de plateforme fintech suisse

Un MVP multiplateforme pour une plateforme de services financiers réglementés, conçu et construit de bout en bout : un backend contract-first, un tableau de bord d'exploitation et des applications iOS et Android générées à partir du même contrat.

client · NDA

Nous contacter

Dites-nous ce que vous voulez faire construire.

Nous sommes une petite équipe au Portugal, aux horaires de Londres. Un site, une application, un outil interne, ou la plateforme derrière — commencez par une phrase sur le problème et nous prenons la suite.

Tous les articles
Demander un devis