yann64 f530f55577 Mode sombre, option désactivation mises à jour, user-picker avec recherche
- Dark mode complet : darkMode:'class' Tailwind, sélecteur clair/sombre/auto
  dans la navigation (mémorisé dans localStorage, sans flash au chargement) ;
  53 vues et 8 composants Breeze mis à jour avec classes dark:
- Composant user-picker : fenêtre modale avec recherche temps réel (nom/email)
  remplace les <select> d'ajout de membres dans sections et sources
- Paramètres : option "Désactiver la vérification automatique des mises à jour"
  (case à cochage auto-soumise, route POST parametres/updates)
- Panneau "Paramètres généraux" remonté en tête de la page de paramètres
- README recentré sur l'installation manuelle hébergement PHP+MySQL
- VERSION 1.0.1

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-04 19:46:22 +02:00

MesRelevés

Application web de saisie et de recherche de relevés généalogiques pour associations.
Permet la saisie collaborative de relevés d'actes (naissance, mariage, décès, etc.), la recherche plein texte et l'export au format GEDCOM 5.5.1.


Installation sur hébergement mutualisé (recommandé)

Prérequis serveur

Composant Version minimale
PHP 8.2 avec extensions : pdo_mysql, mbstring, openssl, tokenizer, xml, ctype, fileinfo, bcmath, curl
MySQL / MariaDB MySQL 8.0+ ou MariaDB 10.5+
Serveur web Apache (mod_rewrite activé) ou Nginx
Accès fichier Écriture sur storage/ et bootstrap/cache/

PostgreSQL est également supporté et recommandé pour les grandes bases de relevés (full-text search natif, JSONB). Voir la section Docker pour une installation avec PostgreSQL.


Étape 1 — Télécharger et décompresser l'archive

Récupérez la dernière archive depuis la page des releases :

mesreleves-X.Y.Z.tar.gz

Décompressez-la dans le dossier de votre hébergement (via FTP ou le gestionnaire de fichiers du panneau de contrôle) :

tar -xzf mesreleves-X.Y.Z.tar.gz

Cela crée un dossier mesreleves/ contenant toute l'application.


Étape 2 — Faire pointer le site vers public/

Le point d'entrée de l'application est le dossier public/.
Le dossier racine de votre site (document root) doit pointer sur public/, pas sur la racine de l'archive.

Exemples de configurations :

Apache — .htaccess (déjà inclus dans public/)

Rien à faire : le .htaccess livré avec l'application configure automatiquement la réécriture d'URL. Vérifiez que mod_rewrite est activé sur votre hébergement.

Si vous ne pouvez pas modifier le document root, vous pouvez déposer les fichiers directement dans le dossier public_html/ de votre hébergement en copiant le contenu de public/ à sa racine et en adaptant le chemin dans index.php :

// public/index.php — adapter le chemin si l'arborescence est modifiée
require __DIR__.'/../mesreleves/vendor/autoload.php';
$app = require_once __DIR__.'/../mesreleves/bootstrap/app.php';
Nginx
server {
    listen 80;
    server_name votre-domaine.fr;
    root /var/www/mesreleves/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Étape 3 — Lancer l'assistant d'installation

Ouvrez votre navigateur sur https://votre-domaine.fr/setup.

L'assistant vous guide à travers 5 étapes :

  1. Prérequis — vérification automatique des extensions PHP et des droits d'écriture
  2. Base de données — saisie des paramètres MySQL/PostgreSQL ; un bouton « Tester la connexion » valide la configuration avant de continuer
  3. Application — nom du site, URL de base, activation des inscriptions publiques
  4. Compte administrateur — création du premier compte admin
  5. Installation — migrations, génération de la clé d'application, résumé

L'assistant crée automatiquement le fichier .env et exécute toutes les migrations.
Une fois terminé, la page /setup est désactivée.


Étape 4 — Configurer les tâches planifiées (optionnel)

Pour activer les notifications par e-mail et la vérification automatique des mises à jour, ajoutez cette ligne à votre crontab (via le panneau de contrôle de l'hébergement → Tâches planifiées / Cron) :

* * * * * php /chemin/absolu/vers/mesreleves/artisan schedule:run >> /dev/null 2>&1

Remplacez /chemin/absolu/vers/mesreleves/ par le chemin réel sur votre serveur (visible dans le gestionnaire de fichiers, généralement /home/user/www/mesreleves/).


Mise à jour

Dans Administration → Paramètres du site → Version du logiciel, le tableau de bord signale automatiquement les nouvelles versions disponibles (si la vérification n'est pas désactivée et que les tâches planifiées sont actives).

Pour appliquer une mise à jour manuellement :

  1. Télécharger la nouvelle archive mesreleves-X.Y.Z.tar.gz
  2. Décompresser et écraser les fichiers existants (sauf .env et storage/)
  3. Exécuter les migrations depuis un terminal SSH :
    php artisan migrate --force
    php artisan optimize:clear
    

Fonctionnalités

  • Saisie collaborative — formulaires dynamiques pilotés par des types de sources configurables
  • Calendriers — saisie en calendrier grégorien, julien ou républicain avec conversion automatique
  • Recherche plein texte — filtrable par type de source, lieu (avec subdivisions récursives) et plage d'années
  • Gestion des lieux — arbre hiérarchique (pays → région → département → commune…), types configurables
  • Workflow de validation — statuts à faire → en cours → à valider → terminé, notifications mail + in-app
  • Export GEDCOM 5.5.1 — par source ou par sélection de recherche, conversion des dates vers le grégorien
  • Gestion des rôles — administrateur, responsable de section, membre ; autorisations granulaires par source
  • Interface admin — tableau de bord, gestion des utilisateurs, sections, dépôts d'archives, types de sources
  • Import / export CSV — gestion en masse des utilisateurs
  • Mode sombre — détection automatique, commutable manuellement (clair / sombre / automatique)
  • 2FA par e-mail — code PIN à 6 chiffres à la connexion, activé dès qu'un serveur SMTP est configuré

Stack technique

Composant Technologie
Backend PHP 8.2+ · Laravel 12
Base de données MySQL 8.0+ / MariaDB 10.5+ · ou PostgreSQL 16+
Frontend Blade · Alpine.js · Tailwind CSS
Auth Laravel Breeze (sessions)

Docker

Pour une installation avec Docker (PostgreSQL, Redis, php-fpm) :

Prérequis

  • Docker Engine ≥ 24
  • Docker Compose v2

Première installation

tar -xzf mesreleves-X.Y.Z.tar.gz
cd mesreleves
./install.sh

Le script crée un .env depuis .env.example. Éditez-le avec vos paramètres, puis relancez :

./install.sh

L'application est accessible sur le port 80.

Tâches planifiées (Docker)

* * * * * cd /chemin/vers/mesreleves && docker compose -f docker-compose.prod.yml exec -T app php artisan schedule:run >> /dev/null 2>&1

Mises à jour (Docker)

docker compose -f docker-compose.prod.yml exec app php artisan app:update

Développement

Prérequis

  • PHP 8.2+, Composer, Node.js 20+
  • MySQL 8+ / MariaDB 10.5+ ou PostgreSQL 16+

Démarrage rapide

composer install
npm install && npm run build

cp .env.example .env
php artisan key:generate

# Démarrer la base de données (Docker)
docker compose up -d

php artisan migrate
php artisan migrate:fresh --seed   # reset + données de test

php artisan serve       # http://localhost:8000
npm run dev             # Vite en watch (CSS/JS)

Comptes de test créés par le seeder :

E-mail Rôle Mot de passe
admin@mesreleves.local Administrateur password
responsable@mesreleves.local Responsable de section password
membre@mesreleves.local Membre password

Commandes utiles

php artisan test                        # tous les tests
php artisan test --filter=NomTest       # un test précis
./vendor/bin/pint                       # formatage PHP (Laravel Pint)
./vendor/bin/phpstan analyse            # analyse statique

Créer une release

echo "1.1.0" > VERSION
git add VERSION && git commit -m "bump version 1.1.0"

bin/build-release.sh
# → mesreleves-1.1.0.tar.gz

git tag v1.1.0 && git push origin v1.1.0

Architecture

app/
  Models/           Eloquent : User, Source, Releve, Lieu, Section, Depot…
  Http/
    Controllers/    Un controller par entité (+ Admin/ + Auth/)
    Middleware/     RoleMiddleware, CheckInstallation, EnsureUserIsActive
    Requests/       Form requests avec validation
  Policies/         Autorisation par modèle
  Services/         GedcomExportService, DateConversionService, UpdateService,
                    SiteSettingsService
  Enums/            SourceStatus, UserRole, CalendarType, FieldType
database/
  migrations/       Schéma complet (lieux, sections, sources, relevés…)
  seeders/          Données de démonstration
resources/views/
  layouts/          Navigation (sélecteur de thème), app layout, guest layout
  components/       lieu-picker, user-picker (recherche modale), dropdown…
  setup/            Assistant d'installation en 5 étapes
  sources/          CRUD + workflow de statut
  releves/          Formulaire dynamique par type de source
  recherche/        Recherche plein texte + filtres
  admin/            Tableau de bord, utilisateurs, sections, dépôts, paramètres

Licence

Usage interne — association de généalogie.

S
Description
No description provided
Readme 829 KiB
2026-06-06 08:29:50 +02:00
Languages
Blade 53.5%
PHP 44.5%
Shell 1.5%
JavaScript 0.2%
CSS 0.2%