Skip to content

agilare/ladecadanse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

La décadanse

📅 Agenda culturel local

Warning

En raison d'une grande partie de code legacy, et pour des raisons de sécurité, ne déployez pas cette application sur des serveurs publics. La modernisation est en cours, vous pouvez contribuer

La décadanse est un site web qui présente aux visiteurs une sélection d'événements culturels locaux et accessibles. Il est actuellement déployé pour Genève et les environs

La décadanse - page d'accueil

Les organisateurs d'événements ont la possibilité de s'inscrire puis annoncer leurs événements et enfin se présenter.

Les principales sections du site sont :

  • un agenda d'événements, chacun de ceux-ci ayant sa fiche détaillée accompagnée de quelques petits services (signaler une erreur, partager...)
  • un répertoire des Lieux où se déroulent des événements, avec détails, présentation, photos
  • un répertoire des Organisateurs d'événements, similaire aux Lieux
  • un back-office permettant de gérer les diverses entités du site : utilisateurs, événements, lieux, organisateurs, etc.

Installation locale

Ces instructions vous permettront de mettre en place une copie du projet sur votre machine locale à des fins de développement et de test. Voir déploiement pour des notes sur la façon de déployer le projet sur un système actif.

Installation sans Docker

Prérequis

  • Apache 2.4
  • PHP 8.3 (avec les extensions fileinfo, mysqli, mbstring, gd)
  • Composer
  • MariaDB 10.6/MySQL 5.7 (si possible avec innodb_ft_min_token_size=3 et ft_min_word_len=3, pour de meilleurs résultats dans la recherche d'événements)

Étapes

  1. cloner la branche master
  2. composer install
  3. base de données
    1. créer une base de données avec COLLATE 'utf8mb4_unicode_ci' par ex.
      CREATE DATABASE `ladecadanse` /*!40100 COLLATE 'utf8mb4_unicode_ci' */;
    2. créer un utilisateur avec les droits suffisants sur cette base de données, par ex.
      CREATE USER 'ladecadanse'@'localhost' IDENTIFIED BY 'my-password';
      GRANT USAGE ON *.* TO 'ladecadanse'@'localhost';
      GRANT SELECT, INSERT, DELETE, UPDATE  ON `ladecadanse`.* TO 'ladecadanse'@'localhost';
    3. dans la base de données, exécuter les fichiers sous resources/ :
      1. création de la structure et les données utiles pour la table localite avec ladecadanse.sql
      2. mises à jour avec v3-6-3_localite-add-regions_covered.sql, etc.
    4. ajouter un 1er utilisateur, l'admin (groupe 1) qui vous servira à gérer le site (mot de passe : admin_dev) :
      INSERT INTO `personne` (`idPersonne`, `pseudo`, `mot_de_passe`, `cookie`, `groupe`, `statut`, `affiliation`, `region`, `email`,  `signature`, `avec_affiliation`, `gds`, `actif`, `dateAjout`, `date_derniere_modif`) VALUES (NULL, 'admin', '$2y$10$34Z0QxaycAgPFQGtiVzPbeoZFN1kwLEdWDEBI1kEOJGK4A3xRJtMa', '', '1', 'actif', '', 'ge', '', 'pseudo', 'non', '', '1', '0000-00-00 00:00:00.000000', '0000-00-00 00:00:00.000000');
  4. créer vos fichiers de configuration en faisant cp app/env_model.php app/env.php ainsi que cp app/db.config_model.php app/db.config.php et y saisir les valeurs de votre environnement (davantage d'explications et exemples se trouvent dans les fichiers même), avec au minimum les informations de connexion à la base de données
  5. cp .htaccess.example .htaccess si vous voulez implémenter une configuration PHP et Apache de base pour le développement en local

Installation avec Docker

Une configuration Docker est fournie pour exécuter le site en environnement local ou en production.

L'utilisation de Make simplifie la gestion des conteneurs. Les principales actions (build, start, stop, logs, etc.) sont accessibles via des cibles prédéfinies dans le Makefile.

Configuration des environnements

Le projet utilise un fichier unique docker/env/env.php pour tous les environnements. Les paramètres spécifiques à l'environnement (développement ou production) sont définis via des variables d'environnement Docker :

  • Développement : APP_ENV=dev et APP_DEBUG=true
  • Production : APP_ENV=prod et APP_DEBUG=false

Ces variables sont automatiquement configurées dans docker-compose.yml selon le profil Docker utilisé.

Important : Avant de déployer en production, assurez-vous de configurer les valeurs sensibles dans docker/env/env.php (clés API, identifiants SMTP, etc.).

Utilisation

Toutes les commandes acceptent le paramètre PROFILE=dev ou PROFILE=prod (par défaut : dev).

Développement (utilise le profil par défaut) :

make start                  # Démarrer l'environnement de développement
make logs                   # Voir les logs
make shell                  # Ouvrir un shell dans le conteneur
make stop                   # Arrêter les services

Production (spécifier PROFILE=prod) :

make start PROFILE=prod     # Démarrer l'environnement de production
make logs PROFILE=prod      # Voir les logs
make shell PROFILE=prod     # Ouvrir un shell dans le conteneur
make stop PROFILE=prod      # Arrêter les services

Raccourcis pratiques :

make dev                    # Équivalent à : make start
make prod                   # Équivalent à : make start PROFILE=prod

Commandes disponibles

make help                   # Afficher toutes les commandes disponibles
make build [PROFILE=...]    # Construire les images Docker
make start [PROFILE=...]    # Démarrer les services
make stop [PROFILE=...]     # Arrêter les services
make restart [PROFILE=...]  # Redémarrer les services
make logs [PROFILE=...]     # Afficher les logs (mode suivi)
make shell [PROFILE=...]    # Ouvrir un shell dans le conteneur web
make status [PROFILE=...]   # Afficher le statut des services
make clean [PROFILE=...]    # Nettoyer l'environnement (conteneurs, images, volumes)
make install-deps [PROFILE=...]     # Installer les dépendances PHP
make composer-update [PROFILE=...]  # Mettre à jour les dépendances Composer
make composer-require PACKAGE=...   # Ajouter un package Composer

Le site ladecadanse est déployé sur localhost:7777 (dev) ou localhost:8080 (prod). Le mot de passe, par défaut, pour l'utilisateur admin est admin_dev.

Usage

Une fois le site fonctionnel, se connecter avec le login admin (créé ci-dessus) permet d'ajouter et modifier des événements, lieux, etc. (partie publique) et de les gérer (partie back-office)

Tests

See tests/README.md

Déploiement

Prérequis

Un espace sur un serveur avec l'infrastructure prérequise, une timezone définie et une base de données

Avec Git-ftp

Prérequis

  1. installer git-ftp
  2. dans le répertoire du projet, configurer les données de connexion (ici avec un scope pour le site de production : prod) :
    $ git config git-ftp.prod.user mon-login
    $ git config git-ftp.prod.url "ftp://le-serveur.ch/web"
    $ git config git-ftp.prod.password 'le-mot-de-passe'

Note

Pour voir sa config git ftp : git config -l | grep git-ftp

Pour mettre en place

  1. premier envoi des fichiers
    $ git ftp init -s prod
  2. dans app/env.php configurer le site selon l'environnement

Pour mettre à jour avec les derniers commits

$ git ftp push -s prod

Analyse du code

Cinq analyseurs de code PHP sont disponibles et peuvent être exécutés via Composer.

  • ils sont configurés pour la version de PHP requise
  • le niveau d'analyse est réglé aussi haut que possible, mais pas trop pour ne pas relever les erreurs dûes à l'ancienneté du code (par ailleurs certaines erreurs peu ou pas pertinentes sont ignorées) et ciblé plutôt pour la version de PHP requise
  • les répertoires vendor, var, etc. sont ignorés

phpstan

$ composer phpstan

Erreurs nombreuses et peu importantes ignorées stockées dans phpstan-baseline.neon

Rector

Exécuter sans modifier directement les fichiers (aperçu) :

$ composer rector:dry-run

Psalm

$ composer psalm

Phan

./vendor/bin/phan --progress-bar -o phan.txt

puis éventuellement, pour abréger le rapport :

cat phan80.txt | cut -d ' ' -f2 | sort | uniq -c | sort -n -r

PHPCompatibility

Dispo de PHP 8.0 à 8.4

Pour 8.4 :

$ composer sniffer:php84

Changelog

Voir le changelog et les releases sur GitHub

Contribuer

Le projet accepte volontiers de l'aide ; il y a diverses manières de contribuer comme améliorer la sécurité et la qualité du site, tester des fonctionnalités, etc. Les lignes directrices pour les contributions décrivent en détail l'état actuel du projet, les possibilités d'aide et comment le faire.

Contact

Michel Gaudry - michel@ladecadanse.ch

GitHub La décadanse

Licence

This work is licensed under AGPL-3.0-or-later