Application web de suivi des paramètres d'eau d'aquarium : relevés, historique, graphiques, gestion de plusieurs bacs et catalogue d'espèces avec vérification de compatibilité.
Dépôt : github.com/Probe311/AquaTrack
- Relevés d'eau — NO₂, NO₃, GH, KH, pH, Cl₂, CO₂, température (optionnelle)
- Calcul automatique du CO₂ — dérivé du KH et du pH via la formule standard aquarium planté (voir ci-dessous)
- Dashboard — statut Optimal / Attention par paramètre, dernières valeurs
- Historique & graphiques — courbes Recharts, tableau des relevés, suppression
- Aquariums multiples — nom, volume, relevés rattachés par bac
- Catalogue d'espèces — 200+ poissons d'eau douce (données Fishipedia), recherche et fiches
- Compatibilité espèces — comparaison température, pH et GH du dernier relevé avec les exigences de chaque espèce présente
| Couche | Technologie |
|---|---|
| Frontend | React 19, TypeScript, Vite 6, Tailwind CSS 4 |
| Graphiques | Recharts |
| Backend | API REST PHP (MySQL) |
| Base de données | MySQL |
Les scripts PHP sont dans public/api/ et copiés dans dist/api/ au build.
| Paramètre | Unité | Plage recommandée | Remarque |
|---|---|---|---|
| NO₂ (Nitrites) | mg/L | 0 – 0,5 | Toxique pour les poissons |
| NO₃ (Nitrates) | mg/L | 0 – 50 | Nutriments plantes |
| GH (Dureté totale) | °dGH | 4 – 20 | Ca, Mg |
| KH (Dureté carbonatée) | °dKH | 3 – 15 | Pouvoir tampon du pH |
| pH | — | 6,5 – 8,0 | Acidité |
| Cl₂ (Chlore) | mg/L | 0 | Doit être nul |
| CO₂ | mg/L | 15 – 35 | Calculé automatiquement (voir formule) |
| Température | °C | 22 – 28 | Optionnelle, pour compatibilité espèces |
Le CO₂ n'est plus saisi manuellement : il est calculé en temps réel dans le formulaire de relevé à partir du KH et du pH, selon la relation utilisée dans les tableaux JBL :
CO₂ (mg/L) = 3 × KH × 10^(7 − pH)
- Arrondi à l'entier le plus proche
- Champ CO₂ en lecture seule dans le formulaire
- Implémentation :
utils/waterParams.ts
Exemples :
| KH | pH | CO₂ calculé |
|---|---|---|
| 10 | 7,2 | 19 mg/L |
| 6 | 6,8 | 29 mg/L |
| 15 | 7,6 | 71 mg/L |
Zone idéale pour un aquarium planté : 15 – 35 mg/L.
Aquatrack/
├── App.tsx # Application principale (navigation, dashboard)
├── components/ # UI React (formulaire, graphiques, aquariums, espèces)
├── services/storage.ts # Client API (fetch vers PHP)
├── utils/waterParams.ts # Calcul CO₂
├── types.ts # Modèles TypeScript et métadonnées paramètres
├── public/
│ ├── api/ # Endpoints PHP (readings, aquariums, health…)
│ └── data/species.json # Catalogue espèces (lecture seule)
├── api/
│ ├── init.sql # Schéma MySQL
│ └── README.md # Doc API & BDD
├── scripts/ # Outils (génération catalogue espèces)
├── DEPLOIEMENT.md # Guide FTP / o2switch
└── ROADMAP.md # Pistes d'évolution
Prérequis : Node.js 20+, PHP 8+ (pour l'API), MySQL.
npm install
npm run devInterface : http://localhost:5173
npm run dev:phpEndpoints : http://localhost:8080/api/
Configurez le proxy Vite si nécessaire pour que le frontend appelle l'API locale (voir vite.config.ts).
- Créez une base MySQL.
- Exécutez une fois
api/init.sql(tablesreadings,aquariums,aquarium_stock). - Créez un fichier
.envà la racine (non commité) :
DB_HOST=localhost
DB_USER=votre_utilisateur
DB_PASSWORD=votre_mot_de_passe
DB_NAME=votre_basecurl http://localhost:8080/api/health.php
# {"ok":true,"db":true}npm run build
npm run preview # prévisualisation locale du dossier dist/Le dossier dist/ contient l'app statique + dist/api/ + dist/data/.
Pour la mise en ligne (FTP, o2switch, structure serveur, .env production) : DEPLOIEMENT.md
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /api/health.php |
Santé PHP + connexion MySQL |
| GET/POST | /api/readings.php |
Liste / création de relevés |
| DELETE | /api/readings.php?id= |
Suppression d'un relevé |
| GET/POST | /api/aquariums.php |
Aquariums |
| GET/POST/DELETE | /api/aquarium_stock.php |
Poissons par aquarium |
Détails : api/README.md
Données dérivées de Fishipedia, stockées dans public/data/species.json. Usage local uniquement, sans appel API externe en runtime.
Regénération (optionnel) :
node scripts/generate-species.js| Commande | Action |
|---|---|
npm run dev |
Serveur de développement Vite |
npm run dev:php |
Serveur PHP local (public/) |
npm run build |
Build production → dist/ |
npm run preview |
Prévisualisation du build |
- DEPLOIEMENT.md — mise en ligne FTP
- api/README.md — API PHP et MySQL
- api/init.sql — schéma de base
- ROADMAP.md — évolutions prévues
Projet personnel — voir le dépôt GitHub pour les conditions d'utilisation.