diff --git a/README.md b/README.md index f13671a..0bd7602 100644 --- a/README.md +++ b/README.md @@ -2,32 +2,33 @@ Générateur de site statique minimaliste alimenté par des fichiers Markdown. -Écrivez du contenu en `.md`, lancez `python3 build.py`, déployez les fichiers HTML générés. +Écrivez du contenu en `.md`, lancez `python3 build.py`, et roulez jeunesse. ## Fonctionnalités -- Pages et articles en Markdown avec coloration syntaxique +- Pages et articles en Markdown avec coloration syntaxique (imaginez créer des pages de votre site avec Obsidian !) - Page d'accueil générée automatiquement (5 derniers articles, du plus récent au plus ancien) -- Catégorisation automatique des articles avec arborescence de dossiers +- Catégorisation des articles avec arborescence de dossiers automatique (ou non) - Métadonnées par article : titre, date, auteur, catégorie, image de couverture - Dark mode : automatique selon l'heure (light 08h30–17h30) + toggle manuel mémorisé - Ancres cliquables sur les titres `h1`–`h4` -- HTML personnalisé dans les articles -- Menu avec filtrage automatique des liens invalides et distinction liens internes/externes +- Possibilité d'integration de snippets HTML +- Menu avec masquage automatique des liens invalides - Aucune dépendance JavaScript côté client ## Prérequis -- Python 3.x +- Python 3 - `pip install markdown` ## Installation ```bash -git clone https://github.com/votre-repo/pagemark +git clone https://git.azuze.fr/kawa/pagemark cd pagemark pip install markdown ``` +Une image Docker arrive bientot© ## Structure du projet @@ -45,7 +46,7 @@ pagemark/ ├── categories.md # Mapping catégories → dossiers de sortie ├── images/ # Images référençables via /images/fichier.jpg └── pages/ - ├── index.md # Contenu optionnel affiché au-dessus des articles + ├── index.md # Contenu optionnel affiché au-dessus des articles en page d'accueil └── *.md # Vos pages et articles ``` @@ -65,7 +66,7 @@ Le blog d'un passionné de technologie **`md/footer.md`** — pied de page en Markdown : ```markdown -© 2026 Votre Nom +© 2026 Votre Nom - Propulsé par un 1.2l 16v ``` **`md/menu.md`** — liste de liens. Les liens internes sont filtrés automatiquement (masqués si la page n'existe pas), les liens externes s'ouvrent dans un nouvel onglet avec le suffixe `↗` : @@ -92,7 +93,6 @@ Créez un fichier `.md` dans `md/pages/`. Les métadonnées se placent en tête Contenu de l'article en Markdown... ``` -> Une page sans `::Date:` est une page statique (elle n'apparaît pas dans le listing de la page d'accueil). ### 3. Générer le site @@ -103,22 +103,24 @@ python3 build.py ### 4. Tester en local ```bash -python3 -m http.server 3000 +python3 -m http.server 6969 ``` -Puis ouvrez [http://localhost:3000](http://localhost:3000). +Puis ouvrez [http://localhost:6969](http://localhost:6969). --- ## Métadonnées +Placez des métadonnées en début de fichier afin de beneficier des certaines fonctionnalités comme les categories et l'affichage d'une card en page d'accueil. + | Métadonnée | Syntaxe | Rôle | |---|---|---| | `::Titre:` | `::Titre:Mon titre` | Affiché en `

` avant le contenu | | `::Date:` | `::Date:dd/mm/YYYY` | Date de publication, utilisée pour le tri | | `::Auteur:` | `::Auteur:Pseudo` | Nom de l'auteur | | `::Categories:` | `::Categories:Blog-Tutos` | Catégorie et sous-catégorie | -| `::Image:` | `::Image:/images/cover.jpg` | Image de couverture dans les cards | +| `::Image:` | `::Image:/images/cover.jpg` | Image de couverture pour les cards | Toutes les métadonnées sont optionnelles. Seules les pages avec `::Date:` sont traitées comme des **articles** et apparaissent dans le listing de la page d'accueil. @@ -126,10 +128,12 @@ Toutes les métadonnées sont optionnelles. Seules les pages avec `::Date:` sont ## Catégories -Le fichier `md/categories.md` mappe les noms de catégories vers des dossiers de sortie : +Les dossiers de catégories sont crées automatiquement et placés a la racine du site par défaut. + +Pour en modifier l'emplacement, modifiez le fichier `md/categories.md` comme suit : ``` -- Blog:/blog +- Categorie:/dossier - News:/news - Tutoriels:/tutos ``` @@ -141,7 +145,7 @@ Le fichier `md/categories.md` mappe les noms de catégories vers des dossiers de 3. Fichier `mon-article.md` → généré dans `news/tech/mon-article/index.html` 4. URL : `/news/tech/mon-article/` -Si une catégorie n'est pas dans `categories.md`, son nom en minuscules est utilisé comme dossier. +Si une catégorie n'est pas dans `categories.md`, son nom en minuscules est utilisé comme nom de dossier. --- @@ -170,7 +174,7 @@ Placez vos images dans `md/images/` et référencez-les dans le Markdown : ![Description de l'image](/images/photo.jpg) ``` -Pour l'image de couverture d'un article (affichée dans les cards de la page d'accueil) : +Pour ajouter une image de couverture d'article (affichée dans les cards de la page d'accueil) rajoutez ceci dans les metadatas : ``` ::Image:/images/cover.jpg @@ -197,7 +201,7 @@ Les variables CSS `var(--bg)`, `var(--text)`, `var(--accent)`, etc. s'adaptent a | Comportement | Détail | |---|---| | **Par défaut** | Light de 08h30 à 17h30, dark le reste du temps | -| **Manuel** | Bouton `☾` / `☀` dans la barre de navigation | +| **Manuel** | Bouton `☾` / `☀` dans la barre de navigation > *désactive le machanisme auto quand utilisé*| | **Mémorisation** | Le choix est sauvegardé via `localStorage` — il prend le dessus sur le comportement automatique | --- @@ -214,33 +218,12 @@ L'`id` est généré à partir du texte du titre (minuscules, tirets à la place --- -## Déploiement avec nginx +## Workflow -Copiez les fichiers générés vers votre serveur. Configuration nginx minimale : - -```nginx -server { - listen 80; - server_name monsite.com; - root /var/www/pagemark; - - location / { - try_files $uri $uri/index.html =404; - } -} -``` - -La directive `try_files $uri $uri/index.html` permet de résoudre `/mon-article/` → `/mon-article/index.html` sans redirection. - ---- - -## Workflow recommandé - -``` -1. Éditer md/pages/mon-article.md -2. python3 build.py +1. Éditer `md/pages/mon-article.md` +2. Générer les site avec `python3 build.py` 3. Copier les fichiers générés sur le serveur -``` + Pour automatiser le déploiement, un simple script shell suffit :