02 - Création du dépôt Forge-web¶
1. Objectif du tutoriel¶
Ce tutoriel décrit la procédure propre pour créer le projet local Forge-web, séparé du framework Forge.
Le projet Forge-web servira à publier le site officiel :
Il contiendra progressivement :
- la landing page publique ;
- la documentation publique de Forge ;
- les sources MkDocs ;
- les notes d’infrastructure ;
- les scripts de génération ou de déploiement ;
- plus tard, les éléments nécessaires à la publication sur le serveur.
Ce projet ne doit pas modifier le cœur du framework Forge.
2. Principe général¶
Le framework Forge et le site Forge-web doivent rester séparés.
La séparation évite de mélanger :
- le développement du framework Python ;
- la documentation publique ;
- la landing page ;
- l’infrastructure de publication ;
- les notes DNS / HTTPS / Proxmox.
La bonne organisation est donc :
Cette séparation est importante. Le site web n’est pas une application métier Forge et ne doit pas devenir une extension du framework.
3. Résultat final attendu¶
À la fin de la procédure, on doit obtenir :
Forge-web/
├── .git/
├── .gitignore
├── README.md
├── docs/
│ └── .gitkeep
├── infra/
│ └── .gitkeep
├── landing/
│ └── assets/
│ ├── css/
│ │ └── .gitkeep
│ ├── img/
│ │ └── .gitkeep
│ └── js/
│ └── .gitkeep
├── notes/
│ └── .gitkeep
└── scripts/
└── .gitkeep
Le dépôt local doit être synchronisé avec GitHub :
La branche principale doit être :
4. Prérequis¶
Avant de commencer, il faut disposer de :
- Git installé ;
- Python installé ;
- un compte GitHub ;
- un dossier de travail local, ici
/home/roger/Projets.
Vérification :
Résultat attendu dans notre cas :
Il faut aussi vérifier que le dossier Forge-web n’existe pas déjà :
Résultat attendu :
5. Création de la structure du projet¶
On crée uniquement les dossiers nécessaires au démarrage.
cd /home/roger/Projets
mkdir -p Forge-web/{landing/assets/{css,js,img},docs,infra,notes,scripts}
find Forge-web -maxdepth 4 -type d | sort
Résultat attendu :
Forge-web
Forge-web/docs
Forge-web/infra
Forge-web/landing
Forge-web/landing/assets
Forge-web/landing/assets/css
Forge-web/landing/assets/img
Forge-web/landing/assets/js
Forge-web/notes
Forge-web/scripts
Explication des dossiers¶
| Dossier | Rôle |
|---|---|
landing/ |
Contiendra la future page d’accueil statique de forgemvc.com |
landing/assets/css/ |
Feuilles CSS de la landing page |
landing/assets/js/ |
JavaScript éventuel de la landing page |
landing/assets/img/ |
Logos, images et illustrations |
docs/ |
Sources de documentation ou contenu public MkDocs |
infra/ |
Notes ou fichiers d’infrastructure sans secrets |
notes/ |
Notes de travail du projet Forge-web |
scripts/ |
Scripts locaux de génération ou de déploiement |
Le dossier site/ n’est pas créé manuellement ici. Il sera généré plus tard par MkDocs et ignoré par Git.
6. Création du README¶
Le fichier README.md sert à expliquer clairement le rôle du dépôt.
Créer le fichier :
Contenu recommandé :
# Forge-web
Site officiel du framework Forge.
Objectif du projet :
- publier https://forgemvc.com ;
- héberger la landing page publique ;
- héberger la documentation Forge générée avec MkDocs ;
- préparer un déploiement statique simple ;
- garder ce projet séparé du framework Forge.
## Périmètre
Ce dépôt concerne uniquement Forge-web :
- landing page ;
- documentation publique ;
- génération statique ;
- notes d'infrastructure ;
- scripts de build et de déploiement.
Ce dépôt ne doit pas modifier le cœur du framework Forge.
## Structure initiale
- landing/ : source de la landing page statique ;
- docs/ : documentation publique ou sources MkDocs ;
- site/ : site généré, non versionné ;
- infra/ : notes et fichiers d'infrastructure sans secrets ;
- notes/ : notes de travail du projet ;
- scripts/ : scripts locaux de génération ou déploiement.
## Décision initiale
Le site sera statique dans un premier temps.
MkDocs servira à générer la documentation.
Le reverse proxy et HTTPS seront traités plus tard, probablement avec Caddy.
Proxmox ne doit jamais être exposé directement au public.
Pourquoi ce README est important¶
Le README fixe dès le départ le périmètre du dépôt.
Il évite les dérives suivantes :
- transformer Forge-web en application Forge ;
- modifier le cœur du framework depuis ce dépôt ;
- mélanger site web, framework, mail, firewall et Proxmox ;
- placer des secrets dans le projet.
7. Création du .gitignore¶
Le fichier .gitignore indique à Git ce qu’il ne doit pas versionner.
Créer le fichier :
Contenu recommandé :
# Python
__pycache__/
*.py[cod]
.venv/
venv/
# MkDocs / build statique
site/
# Environnements et secrets
.env
.env.*
*.key
*.pem
*.crt
secrets/
.envrc
# Système / éditeurs
.DS_Store
Thumbs.db
.vscode/
.idea/
# Logs
*.log
logs/
Pourquoi ignorer site/¶
Le dossier site/ sera généré automatiquement par MkDocs.
Il ne doit pas être versionné dans ce dépôt de sources, car il s’agit d’un artefact de build.
On versionne les sources, pas le résultat généré.
Pourquoi ignorer les secrets¶
Le dépôt ne doit jamais contenir :
- mots de passe ;
- clés privées ;
- certificats privés ;
- tokens GitHub ;
- tokens Cloudflare ;
- fichiers
.envréels.
C’est indispensable, surtout pour un projet destiné à être publié.
8. Ajout des fichiers .gitkeep¶
Git ne versionne pas les dossiers vides.
Pour conserver la structure initiale, on ajoute un fichier .gitkeep dans chaque dossier vide.
cd /home/roger/Projets/Forge-web
find . -type d -empty -exec touch {}/.gitkeep \;
find . -maxdepth 4 -type f | sort
Résultat attendu :
./.gitignore
./README.md
./docs/.gitkeep
./infra/.gitkeep
./landing/assets/css/.gitkeep
./landing/assets/img/.gitkeep
./landing/assets/js/.gitkeep
./notes/.gitkeep
./scripts/.gitkeep
Attention : il ne faut pas garder de .gitkeep à la racine du projet. La racine contient déjà des fichiers, donc elle n’est pas vide.
Si un .gitkeep racine a été créé par erreur :
9. Initialisation du dépôt Git local¶
Depuis la racine du projet :
Puis vérifier l’état :
Résultat attendu :
Les fichiers sont présents mais pas encore suivis par Git.
10. Ajout des fichiers à l’index Git¶
Ajouter les fichiers initiaux :
Vérifier :
Résultat attendu :
A .gitignore
A README.md
A docs/.gitkeep
A infra/.gitkeep
A landing/assets/css/.gitkeep
A landing/assets/img/.gitkeep
A landing/assets/js/.gitkeep
A notes/.gitkeep
A scripts/.gitkeep
La lettre A signifie que Git va ajouter ces fichiers au prochain commit.
11. Premier commit local¶
Créer le premier commit :
Vérifier :
Résultat attendu :
Le statut Git doit être propre, c’est-à-dire sans fichier modifié ou non suivi.
12. Création du dépôt GitHub¶
Créer un dépôt GitHub séparé nommé :
Paramètres recommandés :
Il ne faut pas demander à GitHub de créer un README ou un .gitignore, car ces fichiers existent déjà localement.
Sinon GitHub créerait un historique différent, ce qui compliquerait le premier push.
Dépôt créé dans notre cas :
13. Ajout du dépôt distant¶
Ajouter GitHub comme remote origin :
Vérifier :
Résultat attendu :
origin https://github.com/caucrogeGit/Forge-web.git (fetch)
origin https://github.com/caucrogeGit/Forge-web.git (push)
14. Premier push vers GitHub¶
Envoyer la branche locale main vers GitHub :
Résultat attendu :
L’option -u permet d’associer la branche locale main à la branche distante origin/main.
Après cela, les futurs pushs pourront se faire simplement avec :
15. Vérification finale¶
Vérifier que tout est propre :
Résultat attendu :
Sur la branche main
Votre branche est à jour avec 'origin/main'.
rien à valider, la copie de travail est propre
La branche doit indiquer :
Le dernier commit doit être :
Le remote doit être :
origin https://github.com/caucrogeGit/Forge-web.git (fetch)
origin https://github.com/caucrogeGit/Forge-web.git (push)
16. État final obtenu¶
À la fin de cette procédure, le projet est correctement initialisé.
État obtenu :
Forge-web local créé
Git local initialisé
Premier commit fait
Dépôt GitHub séparé créé
Remote origin ajouté
Premier push effectué
Branche main synchronisée avec origin/main
Le dépôt local est propre :
17. Points de vigilance¶
17.1 Ne pas travailler dans le dépôt Forge¶
Avant toute commande, vérifier le dossier courant :
Le bon dossier est :
Pas :
17.2 Ne pas versionner le dossier site/¶
site/ sera généré automatiquement.
Il doit rester dans .gitignore.
17.3 Ne pas stocker de secrets¶
Aucun secret ne doit être ajouté au dépôt.
Exemples interdits :
17.4 HTTPS ou SSH pour GitHub¶
Le remote actuel utilise HTTPS :
Ce n’est pas bloquant.
Si GitHub demande trop souvent une authentification, il sera possible plus tard de basculer en SSH :
18. Conclusion¶
Le dépôt Forge-web est prêt.
Il est maintenant possible de passer à la suite du projet :
La prochaine étape consistera à créer la première page publique statique de forgemvc.com, sans toucher au framework Forge.