-
Notifications
You must be signed in to change notification settings - Fork 6
Home
Se référer à la page How it works du guide administrateur (accès privé, demandez-moi l'accès)
Jusqu'à aujourd'hui les fonctionnalités et la maintenance ont été principalement réalisées le créateur de l'application, avec l'aide ponctuelle (et louable) de tiers. Ce travail est fait de manière épisodique, principalement selon la disponibilité (et la motivation) de son principal contributeur.
En général j'essaie de maintenir le code à jour selon les évolutions de ses dépendances et l'entretien de base requis; ça se concrétise avec 2-3 versions par an. Il arrive que certaines périodes me permettent de faire des mises à jour plus fréquentes et/ou des développements plus importants.
Quand une nouvelle version se profile, les tests manuels et automatiques usuels sont effectués et les changements qui ont une qualité satisfaisante sont envoyé sur le dépôt princial en ligne (GithHub) dans la branche master
, avec le CHANGELOG.md
à jour.
Après un certain délai, qui peut durer plusieurs semaines, un moment opportun est trouvé pour déployer ce code sur l'instance actuellement active darksite.ladecadanse.ch, à l'aide de Git-ftp. D'éventuels hotfix peuvent suivre peu après.
Ce travail étant actuellement accompli par une seule personne, et de l'aide est bienvenue. Le fichier CONTRIBUTING décrit plus précisément comment faire.
-
master
: est passé en prod une fois vérifié et testé - (bientôt)
develop
: branche de travail, mergée dansmaster
quand sa qualité suffisante - déploiement auto. sur staging
%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'master'}} }%%
gitGraph
commit
commit
branch develop
commit
commit
commit
checkout master
commit
commit
merge develop
commit
commit id: "Normal" tag: "v3.5.6"
- x.x.1 : fixes, nettoyage, petites améliorations, mises à jour...
- x.1 : idem x.x.1 + refactorings & fonctionnalités
PHP
- dépendances : avec Composer
- compatibilité avec nouvelles versions de PHP : PHPCompatibility, Rector, manuelle
- analyse (erreurs, qualité) : PHPCS, PHPStan
- tests : Codeception
JavaScript
- dépendances : manuelle
- (bientôt) analyse (erreurs, qualité) : ESLint
.
├── admin --------- pages du backoffice (accès privé)
├── app ---------- configuration et amorçage de l'application
├── articles ------ pages simples
├── docker
├── librairies ---- moteur du site, classes utilitaires et un peu de métier (sécurité, formulaires, base de données, dates, texte...)
├── resources
├── tests
├── var
└── web ----------- annexe des pages
├── content --- contenu interne
├── css
├── interface - icônes
├── js
└── uploads --- contenu externe
Les répertoires var/
, docker/
, resources/
, tests/
contiennent les fichiers de "travail" (exploitation et développement).
Les pages du site sont directement à la racine (avec une page = un script php) et regroupées en "modules" avec dans leur nom un préfixe commun comme evenement-
(agenda), user-
(autentification, comptes), etc. Chacun de ces modules a en général quelques pages de consultation (publiques) et d'autres d'édition (front-office pour les membres). Quelques fichiers, débutant avec _
sont des morceaux de page réutilisés dans plusieures pages (_header.inc.php
, etc)
Une page standard débute avec bootstrap.php
qui :
- inclus les valeurs d'environnement
app/.env
: statut de l'app, clés d'accès aux services - appelle l'autoload
- définit la configuration
app/config.php
: données utiles pour le métier (agenda, catégories, régions, status, pagination) et paramètres de l'infra (dates, stockage fichiers) - crée les objets services communs (session, logger, connexion DB, validateur...) qui sont largement utilisés.
La plupart des pages, en HTML, inclueront en plus ces morceaux de page :
-
_header.inc.php
: css, etc. Des balises du<head>
peuvent être personnalisées pour chaque page en affectant les variables$page_titre $page_description $extra_css
; -
_footer.inc.php
: charge et setup des services JS internes et externes
Les classes de librairies/
seront chargées et instanciées selon le type de page affichée (navigation, formulaire...) et le métier (événements, lieux, utilisateurs...).
La décadanse est une application de forme assez classique, consistant en une base de données d'éléments de la vie culturelle d'une région, présentés avec une navigation et des outils d'administration de base
Liste avec filtre et tri prédéfini, avec ou sans navigation, comme dans :
- les pages home, agenda, lieux, organisateurs
- l'API, les RSS
- les menus lieux & organisateurs
en tant que contenu principal de la page ou secondaire
L'utilisateur consulte des items : events, lieux, organisateurs, users; avec lesquelles il navigue en
- filtrant : selon le jour/la semaine (events), des mots-clés (recherche), une région, une categorie, un offset (pagination)
- triant : les derniers, par heure
- et peut effecuter des actions sur celles-ci (dans l'admin, outil pour remplacer plusieurs events)
L'utilisateur focus sur un item dans une page dédiée (ou au sein d'une liste) dans laquelle il peut naviguer (préc/suiv. dans Événement), voir des sous items : salle, description, fichier (flyers, etc.) et éventuellement faire des actions sur cet item :
- supprimer
- formulaire
- ajouter (nouvel event, lieu, etc., création compte)
- modifier
- copier (event)
- meta-actions (event : envoyer, signaler erreur, etc.)
- public : consultation
- connecté avec plusieures possibilités (ci-dessus) selon son niveau (admin, acteur culturel) : édition
Estimation de la qualité du code :
- 🔵 : potable
- 🟡 : médiocre
- 🔴 : mauvaise
- events
- liste (agenda) 🔴
- search 🔴
- event 🟡
- actions 🟡
- copy 🔴
- edit 🔴
- email 🟡
- report 🔴
- ics 🟡 -> librairie
- lieux
- liste 🟡
- lieu 🔴
- edit 🔴
- salle-edit 🔴
- text-edit 🔴
- orgas b
- liste 🟡
- orga 🔴
- edit 🔴
- users
- user 🔴
- edit 🔴
- login 🟡
- register 🟡
- reset-pwd 🔴
- user 🔴
- home 🟡
- api 🟡 -> API platform ?
- rss 🟡
- multi-suppr 🔴
- admin 🔴 -> librairie "admin panel"
"" = pas implémenté en tant que tel, concept à implanter
- security (authentification, authorizations) 🟡 -> Symfony Security ou autre
- "models" 🔴
- "DTOs" 🔴
- configurations 🔵 -> a config library
- "routing" 🔴 -> Slim, etc.
- forms 🔴 -> Symfony forms, etc
- validation (query params, forms...) 🟡 -> Symfony validation, etc.
- navigation (menus, calendar, regions, tri, pagination) 🔴 -> APIplatform, Pagerfanta, Fullcalendar, Carbon, etc.
- "template system" : inclusions, pages meta, styles 🔴 -> Twig ou Blade
- "i18n" 🔴 -> Symfony Translation
- articles 🔴 -> a micro CMS
- dev (whoops) 🟡
- mailing 🟡
- dbconnector et repositories -> DBAL, etc.
- uploads process storage 🔴 -> recycle code from ladecadanse4, look for libraries
- dates -> php, calendar lib...
- session -> Symfony, etc.
- external : maps, analytics, tinymce... 🟡 -> Openstretmap, Matomo, markdown editor...
- logging 🟡 -> Monolog
- document structure (html, json...) 🟡
- accessibility 🔴
- scripts 🟡
- styles (css & icons) 🔴 -> UIKit, etc.