215 lines
10 KiB
Markdown
215 lines
10 KiB
Markdown
<p align="center"><img src="resources/branding/Logo_Globinours_maxi.png" alt="Logo Globinours" width="180"></p>
|
||
<h1 align="center">Globinours</h1>
|
||
<p align="center"><strong>La gestion quotidienne d’un refuge, pensée pour rester humaine, rapide et lisible.</strong><br>Né de l’histoire de Twix, conçu pour protéger les suivants.</p>
|
||
|
||
<p align="center">
|
||
<img alt="PHP 8.1+" src="https://img.shields.io/badge/PHP-8.1%2B-777BB4?logo=php&logoColor=white">
|
||
<img alt="SQLite" src="https://img.shields.io/badge/SQLite-WAL-003B57?logo=sqlite&logoColor=white">
|
||
<img alt="Licence AGPL-3.0-or-later" src="https://img.shields.io/badge/licence-AGPL--3.0--or--later-663399">
|
||
</p>
|
||
|
||
## Le projet
|
||
|
||
Globinours est une application web libre de gestion de refuge animalier. Elle réunit les animaux, le suivi médical, les contacts, les familles d’accueil, les tournées, les documents et les tâches administratives dans une interface adaptée aux ordinateurs et aux tablettes.
|
||
|
||
L’application est développée à partir de besoins rencontrés sur le terrain. Elle privilégie des parcours courts, une installation légère et la maîtrise locale des données. Son histoire est racontée dans [HISTORIQUE.md](HISTORIQUE.md) ; les changements publiés sont consignés dans [CHANGELOG.md](CHANGELOG.md).
|
||
|
||
## Fonctions principales
|
||
|
||
- fiches animales multi-espèces, historique, lieux de vie, parentés et groupes inséparables ;
|
||
- traitements, vaccinations, vermifuges, poids, analyses biologiques et documents médicaux ;
|
||
- tournées de soins sur tablette avec salles et box configurables ;
|
||
- annuaire des bénévoles, familles d’accueil, adoptants et partenaires ;
|
||
- placements, adoptions, retours, décès, archives et corbeille ;
|
||
- agenda partagé, rappels médicaux et abonnement iCalendar privé ;
|
||
- pharmacie, lots, péremptions et mouvements de stock ;
|
||
- factures vétérinaires, règlements, justificatifs et statistiques de coûts ;
|
||
- registre des entrées et sorties, exports CSV et dossiers de subvention ;
|
||
- recherche globale avec contrôle des résultats selon le rôle ;
|
||
- site public facultatif pour les animaux proposés à l’adoption ;
|
||
- import progressif depuis Animal Shelter Manager 3 (ASM3) ;
|
||
- sauvegarde et restauration depuis l’interface d’administration ;
|
||
- interface française et anglaise.
|
||
|
||
Le [manuel utilisateur](docs/README.md) décrit chaque module en détail.
|
||
|
||
## Architecture
|
||
|
||
Globinours est rendu côté serveur en PHP et ne nécessite ni framework serveur ni dépendance Composer.
|
||
|
||
```text
|
||
Globinours/
|
||
├── app/
|
||
│ ├── Controllers/ # Actions HTTP
|
||
│ ├── Routes/ # Table de routage
|
||
│ ├── Services/ # Logique métier et infrastructure
|
||
│ └── Views/ # Interface HTML/PHP
|
||
├── migrations/ # Évolution versionnée de SQLite
|
||
├── public/ # Racine à exposer au serveur web
|
||
├── resources/ # Traductions, identité et ressources livrées
|
||
├── scripts/ # Maintenance et imports en ligne de commande
|
||
├── deploy/ # Exemples de déploiement
|
||
├── docs/ # Manuel et documentation technique
|
||
└── tests/ # Tests sur une base temporaire
|
||
```
|
||
|
||
Les données d’une installation ne font pas partie du dépôt :
|
||
|
||
- `data/refuge.sqlite` : base SQLite ;
|
||
- `data/association/` : identité et logo de l’association ;
|
||
- `public/media/` : médias publics ;
|
||
- `data/private-media/` et `data/medical-documents/` : fichiers privés ;
|
||
- `storage/` : sauvegardes et journaux.
|
||
|
||
Les fichiers SQL de `migrations/` sont indispensables. Ils créent une nouvelle base et font évoluer les installations existantes sans rejouer les migrations déjà enregistrées.
|
||
|
||
## Prérequis
|
||
|
||
- PHP 8.1 ou supérieur ;
|
||
- PDO SQLite et SQLite 3 ;
|
||
- extensions PHP `pdo_sqlite`, `mbstring`, `json`, `fileinfo` et `session` ;
|
||
- extensions `zip`, `curl`, `gd` ou `imagick` recommandées selon les fonctions utilisées ;
|
||
- droits d’écriture sur `data/`, `storage/` et `public/media/` ;
|
||
- racine web configurée sur `public/` en production.
|
||
|
||
LibreOffice est facultatif et sert uniquement à convertir certains modèles ODT en PDF.
|
||
|
||
## Installation locale
|
||
|
||
Depuis la racine du projet :
|
||
|
||
Un fichier `.env` est facultatif. Il sert uniquement aux intégrations et aux réglages d’environnement, par exemple :
|
||
|
||
```dotenv
|
||
ICAD_LOGIN=
|
||
ICAD_PASSWORD=
|
||
GEOCODER_EMAIL=contact@example.org
|
||
APP_ENV=development
|
||
```
|
||
|
||
Lancez ensuite le serveur local :
|
||
|
||
```bash
|
||
php -d upload_max_filesize=250M -d post_max_size=260M \
|
||
-S 127.0.0.1:8000 -t public public/router.php
|
||
```
|
||
|
||
Le dernier argument, `public/router.php`, est indispensable : sans lui, les routes telles que la recherche universelle (`/search.json`) renvoient une page introuvable avec le serveur PHP intégré.
|
||
|
||
Ouvrez ensuite `http://127.0.0.1:8000/setup`. L’assistant vérifie l’environnement, recueille l’identité de l’association et crée le premier compte administrateur.
|
||
|
||
Le serveur PHP intégré ne prend pas en charge HTTPS. Si le navigateur utilise un mode « HTTPS uniquement », autorisez HTTP pour l’adresse locale ; une tentative en `https://127.0.0.1:8000` apparaît dans le terminal comme une requête SSL non prise en charge.
|
||
|
||
Les migrations sont appliquées automatiquement. Elles peuvent aussi être exécutées explicitement :
|
||
|
||
```bash
|
||
php scripts/migrate.php
|
||
```
|
||
|
||
Pour charger le jeu de démonstration fictif, utilisez **Paramètres → Données et démonstration**. Cette opération est réservée aux installations de test.
|
||
|
||
## Déploiement
|
||
|
||
En production, seul le dossier `public/` doit être accessible depuis le Web. Des exemples pour Nginx, PHP-FPM et systemd sont fournis dans [deploy/](deploy/README.md).
|
||
|
||
Un paquet YunoHost distinct automatise l’installation, les permissions, la persistance des données, les sauvegardes et les mises à jour. Il est maintenu dans le dépôt `globinours_ynh`.
|
||
|
||
Après un déploiement manuel :
|
||
|
||
```bash
|
||
php scripts/migrate.php
|
||
php scripts/maintenance.php
|
||
```
|
||
|
||
La première commande applique les évolutions de la base. La seconde vérifie notamment son intégrité et ses relations.
|
||
|
||
## Mise à jour et sauvegardes
|
||
|
||
Une sauvegarde complète doit précéder toute mise à jour. Depuis l’application, ouvrez **Paramètres → Sauvegardes**. En ligne de commande :
|
||
|
||
```bash
|
||
php scripts/backup.php avant-mise-a-jour
|
||
```
|
||
|
||
Le script de déploiement contrôlé conserve la version précédente du code, active la maintenance, applique les migrations puis vérifie SQLite. Son utilisation est documentée dans [deploy/README.md](deploy/README.md).
|
||
|
||
Une restauration remplace les données courantes. Elle doit être testée régulièrement sur une installation séparée.
|
||
|
||
## Sécurité et confidentialité
|
||
|
||
Globinours comprend notamment :
|
||
|
||
- mots de passe hachés avec les fonctions natives de PHP ;
|
||
- renouvellement de session et protection CSRF ;
|
||
- rôles et permissions contrôlés côté serveur ;
|
||
- journal d’audit des actions sensibles ;
|
||
- validation des fichiers téléversés et suppression des métadonnées des images ;
|
||
- stockage privé des documents médicaux, justificatifs et sauvegardes ;
|
||
- neutralisation des formules dans les exports CSV ;
|
||
- en-têtes HTTP de sécurité appliqués par l’application.
|
||
|
||
La sécurité dépend aussi du déploiement : HTTPS, permissions Unix, sauvegardes hors serveur et exposition exclusive de `public/` restent nécessaires.
|
||
|
||
Ne publiez jamais `.env`, les bases SQLite, les médias d’une association, les sauvegardes ou les documents privés. Le fichier `.gitignore` fourni couvre les emplacements habituels, mais doit être vérifié avant chaque publication.
|
||
|
||
Le fonctionnement des accès, appareils de confiance et outils RGPD est détaillé dans [docs/09-utilisateurs-et-rgpd.md](docs/09-utilisateurs-et-rgpd.md).
|
||
|
||
## Vérifications
|
||
|
||
La suite de tests utilise une base temporaire et ne touche pas aux données de l’installation :
|
||
|
||
```bash
|
||
php tests/run.php
|
||
```
|
||
|
||
Elle contrôle notamment les migrations, l’intégrité SQLite, l’authentification, les permissions, les parcours médicaux et administratifs ainsi que les sauvegardes.
|
||
|
||
Contrôles complémentaires :
|
||
|
||
```bash
|
||
php scripts/check_translations.php
|
||
find app public scripts tests -name '*.php' -print0 | xargs -0 -n1 php -l
|
||
```
|
||
|
||
## Import ASM3
|
||
|
||
L’assistant **Paramètres → Migration ASM3** analyse un export `.sql` ou `.pgsql` avant toute écriture. Deux stratégies sont disponibles : fusionner avec les données existantes ou remplacer uniquement les données métier. Une sauvegarde est créée avant l’import réel.
|
||
|
||
Les outils en ligne de commande sont destinés aux migrations avancées et commencent par une simulation :
|
||
|
||
```bash
|
||
php scripts/asm3-analyze.php chemin/vers/dump.sql
|
||
php scripts/asm3-plan.php chemin/vers/dump.sql
|
||
php scripts/asm3-import.php chemin/vers/dump.sql
|
||
```
|
||
|
||
L’option `--apply` ne doit être utilisée qu’après lecture des rapports. Le manuel de maintenance fournit le parcours complet : [docs/11-sauvegardes-et-maintenance.md](docs/11-sauvegardes-et-maintenance.md).
|
||
|
||
## Documentation
|
||
|
||
- [Manuel utilisateur](docs/README.md)
|
||
- [Installation et premiers pas](docs/01-premiers-pas.md)
|
||
- [Animaux](docs/02-animaux.md)
|
||
- [Suivi médical](docs/04-suivi-medical.md)
|
||
- [Tournées](docs/05-tournees.md)
|
||
- [Statistiques et administratif](docs/07-statistiques-et-administratif.md)
|
||
- [Utilisateurs et confidentialité](docs/09-utilisateurs-et-rgpd.md)
|
||
- [Sauvegardes et maintenance](docs/11-sauvegardes-et-maintenance.md)
|
||
- [FAQ et dépannage](docs/13-faq.md)
|
||
- [Structure des fichiers](docs/15-audit-structure-fichiers.md)
|
||
|
||
## État du projet
|
||
|
||
La candidate actuelle est `1.0.0-rc.28`. La branche 1.0 est gelée fonctionnellement : seuls les défauts bloquants découverts pendant les validations terrain sont corrigés avant `1.0.0`.
|
||
|
||
Le contrôle de stabilisation est disponible dans [docs/AUDIT-1.0.md](docs/AUDIT-1.0.md).
|
||
|
||
## Licence
|
||
|
||
Globinours est distribué sous licence [GNU AGPLv3 ou ultérieure](LICENSE.md).
|
||
|
||
Les données, photographies, documents privés et modèles appartenant à une installation ne sont pas couverts par la licence du code simplement parce qu’ils sont utilisés avec Globinours.
|
||
|
||
---
|
||
|
||
<p align="center"><strong>Globinours</strong><br>Un outil léger, construit autour des animaux et des personnes qui prennent soin d’eux.</p>
|