chore: arborescence du monorepo EnerVision

Pose les dossiers des sept domaines de la stack (backend, frontend, base,
ETL, infra, CI/CD, monitoring) avec un README de cadrage par domaine.
Seul apps/backend est initialise, les autres font l'objet d'un ticket dedie.

Le squelette Angular n'est pas versionne a la main : apps/frontend porte la
commande ng new a lancer.
This commit is contained in:
Johan LEROY
2026-09-14 12:26:12 +02:00
parent 56118f45b9
commit 26704831e4
30 changed files with 215 additions and 1 deletions
+22
View File
@@ -0,0 +1,22 @@
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2
[*.py]
indent_size = 4
max_line_length = 100
[*.{tf,tfvars}]
indent_size = 2
[Makefile]
indent_style = tab
[*.md]
trim_trailing_whitespace = false
View File
View File
+61
View File
@@ -0,0 +1,61 @@
# Python
__pycache__/
*.py[cod]
.venv/
venv/
.pytest_cache/
.mypy_cache/
.ruff_cache/
.coverage
coverage.xml
htmlcov/
dist/
build/
*.egg-info/
# Node / Angular
node_modules/
.angular/
apps/frontend/dist/
apps/frontend/.angular/
npm-debug.log*
yarn-error.log*
# Terraform
.terraform/
.terraform.lock.hcl
*.tfstate
*.tfstate.*
*.tfplan
crash.log
override.tf
override.tf.json
*_override.tf
*_override.tf.json
# Airflow
etl/airflow/logs/
airflow.db
airflow-webserver.pid
standalone_admin_password.txt
# Environnement et secrets
.env
.env.*
!.env.example
*.pem
*.key
secrets/
# Donnees locales
data/
*.sqlite3
monitoring/grafana/data/
monitoring/prometheus/data/
# IDE et OS
.idea/
.vscode/
*.swp
.DS_Store
Thumbs.db
+64 -1
View File
@@ -1 +1,64 @@
# ProjetPiscine_EnerVision # EnerVision
Monorepo de la plateforme EnerVision : collecte, stockage, analyse et restitution de
series temporelles energetiques, deployee sur une machine on-premise.
## Stack cible
| Domaine | Technologie | Emplacement | Etat |
|------------|-------------------------------------|---------------------|---------------|
| Backend | FastAPI, Python 3.14 | `apps/backend` | Initialise |
| Frontend | Angular, Node 24 LTS | `apps/frontend` | A initialiser |
| Base | PostgreSQL + TimescaleDB | `db` | A initialiser |
| ETL | Apache Airflow | `etl/airflow` | A initialiser |
| Infra | Terraform | `infra/terraform` | A initialiser |
| CI/CD | GitHub Actions | `.github/workflows` | A initialiser |
| Monitoring | Prometheus, Grafana, Alertmanager | `monitoring` | A initialiser |
Seul le backend est initialise a ce stade. Les autres dossiers portent l'arborescence et
un README de cadrage, leur contenu fait l'objet d'un ticket dedie.
## Arborescence
```
.
├── apps/
│ ├── backend/ API FastAPI
│ └── frontend/ Application Angular
├── db/
│ ├── init/ Bootstrap PostgreSQL + TimescaleDB
│ ├── migrations/ Migrations SQL versionnees
│ └── seeds/ Jeux de donnees de reference
├── etl/airflow/
│ ├── dags/ DAGs d'ingestion et d'agregation
│ ├── plugins/ Operateurs et hooks maison
│ ├── include/ Requetes SQL et ressources des DAGs
│ └── tests/ Tests d'integrite des DAGs
├── infra/terraform/
│ ├── modules/ Modules reutilisables
│ └── environments/ Racines Terraform, une par environnement
├── monitoring/
│ ├── prometheus/ Collecte et regles d'alerte
│ ├── grafana/ Provisioning et dashboards
│ └── alertmanager/ Routage des alertes
├── docs/ ADR et vues d'architecture
└── scripts/ Outillage local
```
## Demarrage
Prerequis : uv, Docker. Le poste doit disposer de Python 3.14, que `uv` installe seul.
```bash
make install # dependances du backend
make dev # API sur http://localhost:8000, docs sur /docs
make check # lint + typage + tests
```
`make help` liste les cibles disponibles.
## Conventions
- Branches : `feat/`, `fix/`, `chore/`, `docs/` suivi d'un libelle court.
- Commits : Conventional Commits, portee = dossier de premier niveau concerne.
- Toute decision structurante donne lieu a un ADR dans `docs/adr`.
+26
View File
@@ -0,0 +1,26 @@
# Frontend EnerVision
Le squelette applicatif n'est pas versionne a la main : il est genere par Angular CLI.
## Initialisation
Depuis `apps/` :
```bash
npx --yes @angular/cli@latest new frontend \
--directory frontend \
--style=scss \
--routing \
--ssr=false \
--package-manager=npm \
--skip-git
```
Le dossier `apps/frontend` doit etre vide (hors ce README) avant de lancer la commande.
## Apres generation
1. Pointer l'API dans `src/environments/` sur `http://localhost:8000/api/v1`.
2. Ajouter le proxy de developpement (`proxy.conf.json`) vers le backend.
3. Verifier que `npm start` sert bien sur le port 4200 attendu par `docker-compose.yml`.
4. Ajouter le `Dockerfile` multi-stage (build Angular puis service statique nginx).
+10
View File
@@ -0,0 +1,10 @@
# Base de donnees
PostgreSQL avec l'extension TimescaleDB. Non initialise, voir le ticket dedie.
- `init` : scripts de bootstrap joues au premier demarrage du conteneur.
- `migrations` : migrations SQL versionnees.
- `seeds` : jeux de donnees de reference.
Les migrations du schema applicatif expose par l'API vivent dans
`apps/backend/alembic`, pas ici.
View File
View File
View File
+4
View File
@@ -0,0 +1,4 @@
# Documentation
- `adr` : decisions d'architecture, une par fichier, numerotees et immuables.
- `architecture` : schemas et vues d'ensemble.
View File
View File
+9
View File
@@ -0,0 +1,9 @@
# ETL
Orchestration Apache Airflow : ingestion des mesures, agregations continues,
controles de qualite. Non initialise, voir le ticket dedie.
- `airflow/dags` : DAGs.
- `airflow/plugins` : operateurs et hooks maison.
- `airflow/include` : requetes SQL et ressources referencees par les DAGs.
- `airflow/tests` : tests d'integrite des DAGs.
View File
View File
View File
View File
+6
View File
@@ -0,0 +1,6 @@
# Infrastructure
Provisionnement Terraform de la machine on-premise. Non initialise, voir le ticket dedie.
- `terraform/modules` : modules reutilisables.
- `terraform/environments/<env>` : racines Terraform, une par environnement.
View File
+10
View File
@@ -0,0 +1,10 @@
# Monitoring
Prometheus, Grafana et Alertmanager. Non initialise, voir le ticket dedie.
- `prometheus` : configuration de collecte et regles d'alerte.
- `grafana/provisioning` : sources de donnees et fournisseurs de dashboards.
- `grafana/dashboards` : dashboards versionnes au format JSON.
- `alertmanager` : routage et inhibition des alertes.
Le backend expose deja ses metriques sur `/metrics` au format Prometheus.
View File
View File
+3
View File
@@ -0,0 +1,3 @@
# Scripts
Outillage local du monorepo. Les taches courantes passent par le `Makefile` racine.