A simple, folder-driven static-site engine.
bun ssg fs
at dev 161 lines 14 kB view raw view rendered
1- ✅ Refondre la structure/config des templates : wrapper implicite (`defaultWrapper`), layouts explicites (`defaultLayout`, `indexLayout`), fallback site > tool, logs du wrapper/layout retenus. 2- ✅ Fournir des templates par défaut (wrapper + layouts) minimalistes, avec partials header et footer. 3- ✅ Générer un index minimal (listing) pour racine/collections via `indexLayout`, désactivable. 4- ✅ Protéger les dossiers d’assets : ajouter un `index.html` placeholder et proposer un `.htaccess` optionnel avec `Options -Indexes` (portée limitée à Apache) ; documenter cette option. 5- ✅ Ajouter des helpers de templating genre pour tout mettre en lettres capitales, que les premières lettres de chaque mot, tout mettre en minuscule. 6- ✅ Faire des templates par défaut pour les 404 (et d'autres pages d'erreurs ?) 7- ✅ rendre l'export du modèle obligatoir : ça servira aussi comme une base de donnée interne, notamment pour les dates 8- ✅ Mettre en place un système de date : quand on build on stock dans le fichier du model les dates de créa (1er build) et update des entries, blocks et collections. On fait les comparaisons grâce à un hash qu'on créer en même temps pour chaque objet ? 9- ✅ Intégrer les hooks pour _l'API des plugins_ 10- ✅ Déplacer le model dans \_public et forcer ce chemin car il servira pour certains plugins. Il faudra mettre un index du coup et config apache/ngnix pour pas lister ce dossier 11- ✅ créer un moyen d'appeler des images ou de faire des liens qui concernent le site même 12- ✅ Changer le comportement des images : si une image d'une entrée est dans un markdown, alors on ne rend pas 2 fois l'image dans le html. 13- ✅ ajouter un moyen d'exclure un block du rendu automatique 14- ✅ ignorer les .webt du scan et ne pas les copier 15- ✅ si un fichier est supprimé, même sans le replace-all il doit disparaitre des blocks copiés 16- ✅ ajouter un mode brouillon : ajoute un parametre isDraft sur les entrée. Si serve : rendu (ajouté dans le template une info "brouillon"), si Build ignoré complétement, même pas dans le model ou quoi. 17- ✅ Sitemap generator 18- ✅ prévoire un helper pour les images 19- ✅ dans "\_templates", prévoir l'ajout d'un dossier "assets" pour les images, video, audio... et aussi le css et le js par exemple 20- ✅ Prévoir des classes pour les rendus markdown "md image", "md link", etc. 21- ✅ Liens vers sites extérieurs des markdown vers nouvel onglet (prévoir une option à paramétrer dans la config du site) 22- ✅ Pour les images internes rendues par le markdown, prévoir une option du site pour choisir le format par défaut à afficher et prévoir aussi de pouvoir le faire inline (genre ![mon image](block: image.png, size: small)) 23- ✅ Mises à jour sur les index : 24 - ✅ permettre de définir : templates.default.index, templates.custom.index.root, templates.custom.index.collection, templates.custom.index.collection("collection name") 25 - ✅ permettre de pouvoir délister une collection unlisted.webt (exemple : collection "pages") => ça retire l'indexation automatique pour cette collection et ces entries mais elles existent quand même (est-ce qu'on les sorts quand même dans le Sitemap ?) 26 - ✅ créer un block index-list.webt qui permet de lister des collections et des entrées. Ce block peut être utilisé dans le templating pour afficher des liens et référencer tout ce dont on a besoin pour créer des aperçus des entries ou des collections 27 - ✅ ajouter un collection-description.webt à la racine des collections peut permettre d'ajouter une description aux metadata d'une collection 28 - ✅ ajouter un dossier \_assets à la racine d'une collection peut permettre d'ajouter des fichiers exploitables par le templating (de manière simple) mais pas listés comme une entrées ; par exemple, pour créer une image spécifique d'aperçus pour la collection 29 - ✅ permettre de définir une page spécifique dans le webette.config pour remplacer l'index root ou l'index d'une collection spécifique par une autre entrée venant d'une collection unlisted (l'entrée devient alors réellement la page /index.html en gros) 30 - ✅ faire en sorte que index-list.webt vide = index général (collection, toutes les entry dedans, collection, etc.) 31 - ✅ faire une page de doc complète qui explique tous les moyens de créer des index avec webette 32- ✅ Ajouter les ancres pour liens md et Handlebars 33- ✅ renomer le block index-list.webt en navigation.webt 34- ✅ Ajouter gestion d'une ligne "name: mon nom" pour le block navigation 35- ✅ Ajouter l'indentation des items dans le block navigation 36- ✅ Pourquoi VSCode me remet les pages de templates en HTML pour le Language Mode alors que je spécifie Handlebars ? Comment forcer Handlebars 37- ✅ Pouvoir spécifier un template pour une entrée 38- ✅ Transformer "collection-description.webt" en "description.webt" et l'étendre aux entrées 39- ✅ Ajouter "name.webt" pour les entrées et les collections (ça ne casse pas le slug), on pourrait créer un helper {{displayName entry}} et {{displayName collection}} 40- ✅ Possibilité de pouvoir faire des boutons ? En Markdown ? 41- ✅ Simplifier encore le site de démo : privilégier la doc pour les features et tout 42- ✅ Support Bold + Italic md 43- 🟨 EN COURS commencer un site webette pour la documentation webette 44- ✅ refaire entièrement le website-example pour montrer toutes les capacités actuelles de webette et faire un truc propre 45- ✅ virer les layouts inutiles et vérifier si ça prend encore les templates par défaut si on en enlève 46- ✅ refaire le webette.config.ts pour que ça prenne bien en compte les paramètres de template avec le dossier \_templates 47- ✅ Trouver un nom et inscrire ce nom dans le glossaire pour parler de l'indexation automatique et du rendu de cette navigation 48- ✅ Design 49 - ✅ Pour le markdown, tester avec le cheatsheet markdown qu'on trouve sur github pour voir si tout fonctionne. 50 - ✅ Continuer avec l'entrée unlist-an-entry qui possède un block navigation.webt et faire les changements nécessaires sur ce block spécial 51 - ✅ vérifier les choses cassées 52 - ✅ refaire un peu le texte pour les blocks intro 53 - ✅ Virer les fonts inutilisées 54- ✅ Refaire le point sur les licences 55 - ✅ Changer les infos de licences pour les trucs webette dans Credits sur le site d'exemple 56 - ✅ Bien push les licences dans le git 57- ✅ Proposer une option pour décaler de 1 tous les titres des markdown (h1 => h2, h2 => h3, etc.) 58- 🔳 Peut-être retirer complétement les templates du tool (pas utiles, il faut créer des templates pour son site et puis c'est tout) ? 59- 🔳 intégrer Standard.site (Lexicon ATproto) ? 60- ✅ Permettre de changer l'ordre ascendant par déscendant 61- ✅ Permettre de trier les entrées par date de création + date d'update 62- 🔳 CHANGER LES LIENS DU SITE DE DEMO (quand la doc sera en ligne) : 63 - 🔳 https://docs.webette.org/markdown (website-example/01 Playground/02 Edit your text/01 edit.md:35) 64 - 🔳 https://docs.webette.org/blocks/navigation (website-example/01 Playground/05 Add a Link/01 link.md:63) 65 - 🔳 https://docs.webette.org/images/variants (website-example/01 Playground/06 Insert an image inline/02 inline.md:39) 66 - 🔳 https://docs.webette.org (website-example/01 Playground/11 Go Further/01 go-further.md:21) 67 - 🔳 https://store.webette.org/starters (website-example/01 Playground/11 Go Further/01 go-further.md:24) 68 - 🔳 https://store.webette.org/plugins (website-example/01 Playground/11 Go Further/01 go-further.md:27) 69 - 🔳 https://webette.org/showcase (website-example/01 Playground/11 Go Further/01 go-further.md:30) 70 - 🔳 https://webette.org/donate (website-example/01 Playground/11 Go Further/01 go-further.md:33) 71- ✅ Ajouter à navigation.webt : auto list d'une collection (ses entrées), possibilité d'enlever le nom de la collection 72- ✅ Faire un Helper pour le menu / l'index 73- ✅ En serve sous Windows, tu peux encore croiser des EBUSY lors de rm dans _public 74- 🔳 Sur webette.org : Ajouter une page de présentation d'atelier de formation "créer et publier son site web en une après-midi" 75- ✅ Mettre en place les headers pour favicon 76- 🔳 Mettre en place les headers pour socials 77- 🔳 Mettre système de Tags pour les entry 78- 🔳 Mettre un fichier spécial collection.webt pour transformer une entry en sous-collection (faire en sorte que les niveaux soient-infinis). Faire fonctionner ça avec les index automatique 79- 🔳 Essayer de faire le tri dans les 2 types de fichiers de config pour avoir une vrai séparation entre la config d'un site et la config de l'outil 80- 🔳 Comment ajouter un block vidéo d'une autre entrée où on veut (via MD, via block spécial peut-être, via helper) ? Réfléchir à ça pour tous les types de blocks. 81- 🔳 Injecter le live reload automatiquement 82- 🔳 Refaire le système d'index : 83 - 🔳 Dossier nommé "Root Index" (ou "00 Root Index") = Index de la root 84 - 🔳 Dossier "Collection Index" = Index de la collection 85 - ℹ Ca ne retire pas la ligne de config pour les layout personnalisés. Ca peut être intégré dans les layouts d'index des starters des base pour pouvoir ajouter du texte sur les index ou quoi, genre si ces dossier existes, on met ce contenu dans l'index. Qqch comme ça 86 87## Plugins : 88- 🔳 Plugin de flux RSS 89- 🔳 Plugins (tester avec un plugin de traitement vidéo par exemple : miniature, encodage, metadata...) 90- 🔳 Plugin : Ajouter un moyen à l'utilisateur de changer la date de son entrée grâce à un fichier created.webt et un autre fichier updated.webt si le user veux contrôlé ça. Je ne vois cette feature utile que dans les entrées 91- 🔳 Plugin webette de TOC (sommaire, table des matières) 92- 🔳 Plugin Wayback Machine : Automatiquement archiver les site + fall back sur version archivée si page plus dispo 93 94## Starters : 95- 🔳 Feed à la Pinterest 96- 🔳 Porfolio comme [portfolio.artwo.xyz](portfolio.artwo.xyz) 97- 🔳 VN ou Text RPG 98- 🔳 Blog tout simple 99- 🔳Documentation 100 101## webette UI 102- 🔳 Définir le périmètre produit (MVP) 103 - 🔳 Objectif principal : build/serve sans Bun installé 104 - 🔳 UX minimale : boutons Build / Serve / Stop + logs + lien localhost 105 - 🔳 Choisir le mode d’exécution (binaire Bun compilé) 106 - 🔳 Définir les OS cibles et la stratégie de release 107- 🔳 Préparer le mode dev (sans compiler) 108 - 🔳 Créer un entrypoint dev qui lance le mini serveur 109 - 🔳 Servir l’UI statique locale (HTML/CSS/JS) 110 - 🔳 Prévoir un état global simple (idle/building/serving/error) 111 - 🔳 Boucle de dev simple (relancer le serveur au besoin) 112- 🔳 API locale pour piloter webette 113 - 🔳 Endpoints API : build, serve, stop, status, logs 114 - 🔳 Gestion propre du process de serve (start/stop) 115 - 🔳 Gestion des erreurs et messages utilisateur 116- 🔳 UI sans framework (HTML/CSS/JS) 117 - 🔳 Page unique : boutons + infos de statut 118 - 🔳 Bloc logs (stream ou polling) 119 - 🔳 Lien local dynamique (port configuré) 120 - 🔳 Réglages de base (chemin du site, options build/serve) 121- 🔳 Test “compile” tôt (pour valider la faisabilité) 122 - 🔳 Premier binaire après le POC (serve + build) 123 - 🔳 Vérifier chemins, assets UI, et accès fichiers 124 - 🔳 Ajuster ce qui casse (paths relatifs, permissions) 125- 🔳 Éditeur visuel de config (prioritaire) 126 - 🔳 Définir un format modifiable (JSON/YAML) + pont vers TS 127 - 🔳 UI : sections tool/site (templates, build, serve, markdown, images...) 128 - 🔳 Validation + prévisualisation des changements 129 - 🔳 Stratégie de sauvegarde/rollback 130- 🔳 Packaging & distribution multi-OS 131 - 🔳 Build binaire par OS (Windows/macOS/Linux) 132 - 🔳 Nommage, icônes, signatures si nécessaire 133 - 🔳 Installer ou zip portable + notes de release 134- 🔳 Sécurité & confiance 135 - 🔳 Port local seulement, pas d’exposition réseau par défaut 136 - 🔳 Permissions d’écriture limitées au projet choisi 137 - 🔳 Logs clairs + consentements (ex : ouverture navigateur) 138- 🔳 Étapes de livraison 139 - 🔳 POC : serveur + build + logs 140 - 🔳 Alpha : build/serve/stop + config minimale 141 - 🔳 Beta : éditeur config + packaging multi-OS 142 143## Trucs pour la doc (pas vraiment des tâches, c'est en vrac) : 144Structure et ce qu'il faut mettre dans chaque page : 145 146- `01 Concept` 147 - `01 Everything is a Folder` : arborescence, conventions 148 - `02 The webette Model` : site/collections/entries/blocks, routes, métadonnées, Model exporté 149 - `03 Build vs Serve` : différences, watch, overwrite, brouillons 150 - `04 Learn More (Links and stuff)` : Lien vers "Features", Lien vers la doc officielle, Lien vers les Starters, Lien vers les Plugins, Annuaire de sites webette ou WebRing 151 152- `02 Features` 153 - `01 Augmented Markdown` : rendu md, classes, line breaks, options, helpers 154 - `02 Images` : variants, inline, galerie (dossier), alt/title 155 - `03 Audio and Video` : blocks audio/vidéo, métadonnées, rendu 156 - `04 Navigation and Indexes` : navigation.webt, index auto, overrides 157 - `05 Draft, Ignore and Unlisted` : draft.webt, ignore.webt, unlisted.webt, avec comportements serve/build 158 - `06 Collection's Assets, Name and Descriptions` : _assets, name.webt, description.webt 159 - `07 Plugins` : hooks, enrich, prune/expected, plugin demo, Lien vers la section "lien vers les plugins" 160 - `08 Template and Layouts` : wrapper/layout, fallback, overrides, helpers, assets, lien vers la section "lien vers les Starters" 161 - `09 Sitemap and servers config` : sitemap, config ngnix, htaccess