- PHP 99.2%
- CSS 0.6%
- JavaScript 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| app | ||
| deploy | ||
| docs | ||
| migrations | ||
| public | ||
| resources | ||
| scripts | ||
| tests | ||
| .editorconfig | ||
| .gitignore | ||
| CHANGELOG.md | ||
| HISTORIQUE.md | ||
| LICENSE.md | ||
| README.md | ||
| VERSION | ||

Globinours
La gestion quotidienne d’un refuge, pensée pour rester humaine, rapide et lisible.
Né de l’histoire de Twix, conçu pour protéger les suivants.
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 ; les changements publiés sont consignés dans 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 ;
- mini-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 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.
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/etdata/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,fileinfoetsession; - extensions
zip,curl,gdouimagickrecommandées selon les fonctions utilisées ; - droits d’écriture sur
data/,storage/etpublic/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 :
ICAD_LOGIN=
ICAD_PASSWORD=
GEOCODER_EMAIL=contact@example.org
APP_ENV=development
Lancez ensuite le serveur local :
php -d upload_max_filesize=250M -d post_max_size=260M \
-S 127.0.0.1:8000 -t public public/router.php
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.
Les migrations sont appliquées automatiquement. Elles peuvent aussi être exécutées explicitement :
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/.
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 :
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 :
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.
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.
Vérifications
La suite de tests utilise une base temporaire et ne touche pas aux données de l’installation :
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 :
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 :
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.
Documentation
- Manuel utilisateur
- Installation et premiers pas
- Animaux
- Suivi médical
- Tournées
- Statistiques et administratif
- Utilisateurs et confidentialité
- Sauvegardes et maintenance
- FAQ et dépannage
- Structure des fichiers
État du projet
La candidate actuelle est 1.0.0-rc.3. 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.
Licence
Globinours est distribué sous licence GNU AGPLv3 ou ultérieure.
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.
Globinours
Un outil léger, construit autour des animaux et des personnes qui prennent soin d’eux.