Appli pêcheur (basée sur Fishola cf: https://gitlab.nuiton.org/inrae/fishola)
Application smartphone en sciences participatives pour la pêche amateur sur les plans d'eau français.
Les prérequis sont :
- OpenJDK 15+
- Maven 3.6.2+
- Node v12.18.3
- NPM 6.14.6
- Docker
À noter qu'il est possible de construire le front sans installer Node & NPM, mais il ne sera pas possible de
démarrer le projet en mode dev.
Il est recommandé de lancer une première fois la compilation pour installer le POM parent :
sudo apt install default-jdk maven
mvn clean installEnsuite il faut démarrer :
- le backend (avec sa base de données)
- le front
- l'interface d'administration
- le back-office « gestion interne » (Django)
Deux scripts à la racine orchestrent l'ensemble de la stack en mode dev :
./start_all.sh # PostgreSQL (Docker) + backend Quarkus + fronts pêcheur/admin
# + back-office Django + maildev. Ctrl+C arrête les serveurs de
# dev (les conteneurs Docker restent en place).
./down_all.sh # arrête TOUT : serveurs de dev (tués par port) + conteneurs
# Docker (maildev supprimé, PostgreSQL stoppé — les données
# restent dans le volume). Utile pour repartir propre.| Service | URL |
|---|---|
| Backend (statut) | http://localhost:8080/api/v1/status |
| Front pêcheur | http://localhost:8081 |
| Front admin | http://localhost:8082 |
| Back-office (admin Django) | http://localhost:8083/admin/ |
| Maildev | http://localhost:41080 |
start_all.shlance aussi les migrations Django du back-office (tables framework + profil opérateur). Le premier démarrage installe l'environnement (./setup.sh) si.venvest absent.
Le script run_tests.sh (racine) exécute les suites de tests, avec un scope optionnel :
./run_tests.sh # tout : backoffice (Django) + mobile (vitest) + backend (Quarkus)
./run_tests.sh backoffice # Django, tests DB-free — rapide
./run_tests.sh mobile # front pêcheur — vitest (unitaires)
./run_tests.sh backend # Quarkus — mvn (Testcontainers → Docker + JDK ≥ 25)
./run_tests.sh e2e # Cypress headless — nécessite la stack lancée (start_all.sh)Il affiche un récapitulatif et sort en erreur si une suite échoue. (Le front admin n'a pas
de tests ; les tests backoffice tournent sans base via un runner unittest.)
Sur chaque pipeline il y a une tâche permettant de construire les images Docker contenant l'application : package:docker-demo.
Une fois que les images sont construites, elles sont disponibles dans le registry. Il suffit ensuite d'utiliser la tâche deploy:demo pour déclencher un rechargement de l'application.
Quelques instants plus tard, l'application nouvellement déployée sera utilisable à l'adresse : https://fishola-mobile.demo.codelutin.com.
Se mettre sur develop et initier le process de release :
mvn gitflow:release-startIl faut maintenant vérifier la version avec la commande :
mvn clean verify -DperformReleaseUne fois la vérification terminée, il est possible qu'il y ait des modifications à faire pour corriger le build.
Si tout va bien (BUILD SUCCESS) examinez les fichiers modifiés et les commiter le cas échéant (Exemple : headers de fichiers générés, etc.).
Enfin, terminer la release avec la commande :
mvn gitflow:release-finishCelle-ci va merger la branche sur develop, créer le tag et mettre à jour master.
De façon automatisée, le Gitlab CI va construire l'image Docker associée au tag.
L'application FISHOLA est composée de 5 éléments :
- 1 base de donnée PostgreSQL
- 1 serveur SMTP
- 1 backend en JAVA
- 1 application mobile Android
- 1 application mobile iOs
Le déploiement est détaillé dans le Guide de mise en production
L'application FISHOLA est sous licence GNU Affero General Public License v3.
Le DDL généré à partir des migrations est disponible ici : fishola-backend/target/init-fishola-database.sql.
Pour étendre à tous types de plan d'eau et de cours d'eau, nous utilisons la base de données TOPO fournie par l'IGN disponible sur https://cartes.gouv.fr/rechercher-une-donnee/dataset/IGNF_BD-TOPO
Dans le geopackage téléchargé, les attributs pertinents sont:
- noeud_hydrographique (les points de jointure entre les cours d'eau, plans d'eau et tronçon)
- troncon_hydrographique (Cours d'eau non permanent?)
- cours_d_eau
- plan_d_eau
- surface_hydrographique (Donne la largeur des cours d'eau, si largeure significative)
psql postgresql://postgres:whatever@localhost:15432/fisholacd fishola-backend && mvn flyway:migrateLe mot de passe doit être un hash bcrypt (pas un mot de passe en clair), et created_on
est obligatoire :
INSERT INTO fishola_user (first_name, last_name, email, password, created_on, pseudo)
VALUES ('Arthur', 'Talpaert', 'arthur@symbiome.eu', '$2a$10$...bcrypt...', now(), 'arthur');Éditer le fichier .env et décommenter :
VITE__FORCED_DEVICE_TYPE=application