prixdugaz/README.md
2026-04-08 09:05:30 -04:00

102 lines
2.7 KiB
Markdown

# Prix du gaz
Carte des prix d'essence au Québec affichant les prix en temps réel des stations à travers la province.
## Fonctionnalités
- **Carte interactive** : Carte Leaflet affichant toutes les stations avec les prix
- **Variations de prix** : Affiche les changements de prix sur 48 heures par station
- **Statistiques** : Graphiques historiques des prix avec filtrage par région (Chart.js)
- **Mises à jour automatiques** : Interroge les données en amont toutes les 5 minutes
## Stack technique
- **Backend** : Go avec `modernc.org/sqlite` (pilote SQLite 100% Go)
- **Frontend** : JavaScript pur, htmx pour l'interactivité
- **Carte** : Leaflet avec regroupement de marqueurs
- **Source des données** : [Régie de l'énergie Québec](https://regieessencequebec.ca)
## Démarrage rapide
```sh
# Entrer dans l'environnement de développement
nix develop
# ou
direnv allow
# Lancer le serveur
go run .
# Ou avec des paramètres personnalisés
PORT=8080 PRIXDUGAZ_DB=./prixdugaz.db go run .
```
Le serveur démarre à `http://localhost:8080` et redirige `/` vers `/map`.
## Routes
| Chemin | Description |
|--------|-------------|
| `/map` | Carte interactive avec toutes les stations |
| `/stats` | Graphiques historiques des prix |
| `/api/stations` | JSON : toutes les stations |
| `/api/stats` | JSON : historique mondial des prix |
| `/api/regions` | JSON : liste des régions |
| `/api/station-deltas` | JSON : variations de prix sur 48h |
## Variables d'environnement
| Variable | Défaut | Description |
|----------|--------|-------------|
| `PORT` | `8080` | Port d'écoute HTTP |
| `PRIXDUGAZ_DB` | `./prixdugaz.db` | Chemin de la base de données SQLite |
## Compilation
```sh
go build -o prixdugaz .
```
Ou via Nix :
```sh
nix build
./result/bin/prixdugaz
```
## Déploiement sur NixOS
Le projet fournit un module NixOS via le flake. Ajoutez-le à votre configuration :
**1. Ajoutez le flake comme entrée (`flake.nix`) :**
```nix
inputs.prixdugaz.url = "github:Polensky/prixdugaz";
```
**2. Importez le module NixOS et activez le service :**
```nix
imports = [ inputs.prixdugaz.nixosModules.default ];
services.prixdugaz = {
enable = true;
port = 8080; # optionnel, 8080 par défaut
openFirewall = true; # optionnel, ouvre le port dans le pare-feu
};
```
**Options disponibles :**
| Option | Défaut | Description |
|--------|--------|-------------|
| `enable` | `false` | Active le service |
| `port` | `8080` | Port d'écoute HTTP |
| `dataDir` | `/var/lib/prixdugaz` | Répertoire de la base de données SQLite |
| `openFirewall` | `false` | Ouvre le port dans le pare-feu |
| `package` | flake par défaut | Paquet Prix du gaz à utiliser |
## Licence
MIT