refactor: réorganise le monorepo en sous-dossiers par sous-domaine

Chaque site (wiki, home, dynamic, admin, static, portail, feedback)
a désormais son propre dossier autonome avec ses scripts de déploiement.
Ajoute README.md racine expliquant la structure et la convention git/Claude.
Met à jour .gitignore pour les nouveaux chemins (wiki/docs/assets/).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Cédrix 2026-05-03 17:20:41 +02:00
parent 80574a83f3
commit 58c8b2ea7c
55 changed files with 168 additions and 8 deletions

18
.gitignore vendored
View file

@ -1,18 +1,20 @@
site/
__pycache__/
wiki/site/
wiki/__pycache__/
# Assets binaires — générés par wiki/scripts/build-assets.py
# Hébergés sur https://static.alpinux.org/logo/
wiki/docs/assets/*.png
wiki/docs/assets/*.ico
wiki/docs/assets/images/
dynamic/__pycache__/
dynamic/routes/__pycache__/
dynamic/venv/
dynamic/.env
admin/__pycache__/
admin/venv/
admin/.env
# Assets binaires — générés par scripts/build-assets.py
# Hébergés sur https://static.alpinux.org/logo/
docs/assets/*.png
docs/assets/*.ico
docs/assets/images/
# Obsidian (local uniquement)
.obsidian/

90
README.md Normal file
View file

@ -0,0 +1,90 @@
# org.alpinux.owni — Monorepo Alpinux
Dépôt unique de l'association **Alpinux** (LUG de Savoie).
Gitea : https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.site.2026
---
## Structure
Chaque sous-dossier correspond à un sous-domaine indépendant de `alpinux.org`.
```
org.alpinux.owni/
├── wiki/ → wiki.alpinux.org MkDocs Material (documentation publique)
├── home/ → alpinux.org Page d'accueil statique
├── dynamic/ → dynamic.alpinux.org Flask — quiz et jeux (public + membres)
├── admin/ → admin.alpinux.org Flask — interface d'administration
├── static/ → static.alpinux.org CDN assets : logos, favicons, images OG
├── portail/ → portail.alpinux.org Portail membres (ISPConfig, Nextcloud…)
└── feedback/ → feedback.alpinux.org Formulaire de retours (à construire)
```
---
## Projets indépendants, liés par l'infrastructure
Chaque projet :
- a sa propre configuration Apache (`*.vhost.conf`) et son unit systemd (`*.service`) dans son dossier
- utilise **AlpID** (SSO Keycloak — https://alpid.alpinux.org) pour l'authentification
- a son propre environnement Python (`venv/`) et son fichier `.env` (non versionés)
Les projets sont **liés** par le SSO partagé, le serveur commun (ISPConfig), et l'identité visuelle (logo depuis `static.alpinux.org`).
---
## Convention git et Claude
> **Travailler dans le sous-dossier du projet concerné**, pas à la racine du dépôt.
```bash
cd wiki/ # pour modifier le wiki ou MkDocs
cd dynamic/ # pour modifier l'appli quiz
cd admin/ # pour modifier l'interface admin
```
De même, lorsqu'on utilise **Claude Code** (ou tout autre outil IA) :
lancer Claude depuis le sous-dossier du projet pour que le contexte soit limité à ce projet.
```bash
cd ~/Projects/org.alpinux.owni/wiki && claude
cd ~/Projects/org.alpinux.owni/admin && claude
```
---
## Démarrage rapide par projet
### wiki (wiki.alpinux.org)
```bash
cd wiki
python3 scripts/build-assets.py # génère docs/assets/alpinux-logo.png
pip install mkdocs-material
mkdocs serve # dev local sur http://127.0.0.1:8000
mkdocs build --strict # build de prod dans site/
```
### dynamic (dynamic.alpinux.org)
```bash
cd dynamic
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env && nano .env # renseigner les clés AlpID
flask run --port 5001
```
### admin (admin.alpinux.org)
```bash
cd admin
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env && nano .env # renseigner les clés AlpID
flask run --port 5002
```
---
## Déploiement serveur
Voir les fichiers `docs/technique/` dans `wiki/` pour la documentation complète.
Chaque projet contient son propre `*.vhost.conf` (Apache ISPConfig) et `*.service` (systemd).

26
feedback/README.md Normal file
View file

@ -0,0 +1,26 @@
# feedback.alpinux.org
Formulaire de retours et suggestions pour l'association Alpinux.
## Statut
À construire. Ce sous-domaine n'est pas encore développé.
## Idées
- Formulaire simple (Flask ou statique) pour collecter les retours des participants aux événements
- Intégration AlpID optionnelle (retours anonymes possibles)
- Stockage SQLite ou envoi par e-mail vers une liste de l'association
## Structure prévue
```
feedback/
├── app.py # Flask app (à créer)
├── templates/
├── static/
├── requirements.txt
├── .env.example
├── feedback.alpinux.org.vhost.conf
└── feedback.alpinux.org.service
```

16
portail/README.md Normal file
View file

@ -0,0 +1,16 @@
# portail.alpinux.org
Portail membres de l'association Alpinux.
## Statut
Géré directement via **ISPConfig** sur le serveur. Le contenu de ce sous-domaine (Nextcloud, Dolibarr ou autre outil collaboratif) est installé et configuré côté serveur et n'est pas versioné dans ce dépôt.
## Accès
- URL : https://portail.alpinux.org
- Authentification : AlpID (SSO Keycloak — https://alpid.alpinux.org)
## Notes
Ce dossier est un espace réservé. Si un développement spécifique au portail est nécessaire (thème, plugin, scripts de déploiement), il sera ajouté ici.

26
static/README.md Normal file
View file

@ -0,0 +1,26 @@
# static.alpinux.org
CDN pour les fichiers binaires et assets statiques de l'association : logos, favicons, images Open Graph.
## Contenu hébergé
| Fichier | Usage |
|---------|-------|
| `logo/alpinux-logo-512.png` | Logo 512 px — page d'accueil alpinux.org, balises OG |
| `logo/alpinux-logo-192.png` | Logo 192 px — PWA / Android home screen |
| `logo/favicon-32.png` | Favicon 32 px |
| `logo/favicon-16.png` | Favicon 16 px |
| `logo/favicon.ico` | Favicon ICO multi-taille |
Ces fichiers sont **générés** par `wiki/scripts/build-assets.py` (à partir du SVG source `wiki/docs/assets/alpinux-logo.svg`) et **copiés manuellement** sur le serveur dans le répertoire web de static.alpinux.org. Ils ne sont pas versionés dans ce dépôt.
## Déploiement Apache
Configurer le VirtualHost avec le fichier `static.alpinux.org.vhost.conf` présent dans ce dossier.
```bash
# Sur le serveur, dans ISPConfig ou directement :
sudo cp static.alpinux.org.vhost.conf /etc/apache2/sites-available/
sudo a2ensite static.alpinux.org
sudo systemctl reload apache2
```