Skip to content

Repository files navigation

StrasFlow - Version 2 "Gefjun"

Status Tests Web Coverage Web Tests Mobile Coverage Mobile Runner

Équipe de développement

Installation

Les installeurs pour Linux, Windows, Mac OS et Android sont disponibles ici.

Important ! Au moment de l'échange avec l'application desktop, il est impératif que l'utilisateur du smartphone se connecte sur le même réseau local pour que le trasnfert soit possible.

Dans la version actuelle de Stras'Flow, il est vivement conseillé d'être sur le mode clair pour un affichage optimal sur smartphone.

Linux

.deb

Temps de première installation indicatif : 10 min (c'est l'extraction de la carte qui prend du temps, merci de votre compréhension).

Une réinstallation ne prendra qu'une ou deux minutes.

  • Installation : sudo dpkg -i /path/to/strasflow_2.0.0_amd64.deb
  • Lancement : strasflow (ou depuis le menu Applications --> Bureautique)

AppImage

  • Lancement :
chmod +x /path/to/StrasFlow-2.0.0-x86_64.AppImage
/path/to/StrasFlow-2.0.0-x86_64.AppImages

Windows

.zip

  1. Décompresser l'archive StrasFlow-2.0.0-Windows.zip ;
  2. Double-clic sur start.bat.

Mac OS

.zip

  1. Décompresser l'archive StrasFlow-2.0.0-macOS.zip ;
  2. Glisser StrasFlow.app dans Applications ;
  3. Double-clic.

Android

.apk

Ouvrir le fichier sur smartphone et attendre la fin de l'installation.

Au premier lancement, accepter la géolocalisation.

Screenshots

Client lourd - Lancement

Client lourd - Menu

Client lourd - Carte

Client lourd - Employés

Client lourd - Plannings

Client lourd - Plannings par équipe

Client lourd - Transfert de données

Règles de collaboration Git

Branches protégées

  • main : Production - Push direct interdit - Merge requests uniquement
  • develop : Intégration - Réservé aux mainteneurs
  • feature/<ticket_n>-<feature_name> : Fonctionnalités - Push autorisé par le créateur uniquement
  • git push --force est interdit (sur GitLab)
  • Les Git hooks sont recommandés
  • Les branches feature/* sont backupées tous les jours sur un autre dépôt, privé

Workflow recommandé

  1. Créer sa branche (elle peut dériver d'une autre) : feature/<ticket_number>-<feature_name>
  2. Développer et tester localement
  3. Pusher sur sa branche
  4. Créer une Merge Request vers develop, ou vers la branche forkée
  5. Review et merge par un mainteneur sur develop, par l'auteur de la branche si branche forkée

Architecture du projet

.
├── README.md
├── .gitignore
├── .gitlab-ci.yml
├── docker-compose.yml
│
├── api/                            # API
├── docs/                           # Documentation
├── mobile/                         # Client mobile
│   └── tests                       # Tests
├── scripts/                        # Scripts (notamment pour la CI/CD)
├── visuals/                        # Maquettes, design, screenshoot
├── web/                            # Client lourd
│   ├── public/                     # Données (carte)
│   ├── tests/                      # Tests
│   └── Dockerfile
└── websocket-server/               # Mini-serveur de synchronisation

Cahier des charges

User Story (besoins exprimés)

Lors de manifestations dans l’espace public de la ville de Strasbourg, de nombreuses opérations de logistique sont nécessaires pour assurer le bon déroulement et la sécurisation de l’événement. Les services de la ville sont amenés à poser des barrières pour sécuriser ou gérer les flux de spectateurs, mettre en place des blocs de béton ou des engins pour éviter la pénétration de véhicules dans les zones de spectacle, poser des tribunes, proposer des auges pour la prise d’eau, installer des prises électriques, …

Cette logistique permettant d’assurer la tenue d’événements sur le territoire de Strasbourg, nécessite d’être analysée en amont et d’être intelligemment construite pour assurer sa mise en œuvre de manière efficace en toute sécurité pour les personnes et les biens.

Aussi, afin de faciliter les différentes étapes de ce travail, il est proposé de développer un outil d'aide à la planification d'événements.

Product Backlog (fonctionnalités attendues et contraintes)

Technologies à utiliser

  • L'outil de planification doit être utilisable localement sur poste de travail sans accès réseau ou internet.
  • Le développement doit être clairement structuré et documenté, afin de permettre la maintenance et l'évolution de l'application.
  • L'accès à l'application doit être sécurisé.

Périmètre de l'activité

  • Opérations de logistique sur les voies publiques de la ville de Strasbourg (zone pouvant être étendue à l'Eurométropole).
  • Liste des équipements nécessaires pour la logistique (barrières, etc.) : voir le document ici.
  • Terminologie : page Wiki ci-contre.

Sprint 3 Backlog (du 10 décembre au 12 janvier)

Cette évolution de l'application concerne principalement la manière d'afficher les informations chronologiques des poses et déposes des équipement, l'ajout d'informations sur la carte et la gestion des plannings des équipes.

Fonctionnalités attendues

  • Saisie sous forme de polyligne des éléments de type barrière ou bloc de béton sur la carte
  • Calcul automatique du nombre d'éléments nécessaires en fonction de la longueur de la polyligne
  • Saisie d'informations chronologiques pour les parcours (date et heure de début, vitesse la plus rapide et la moins rapide)
  • Affichage chronologique des équipements sur la carte entre le début et la fin de la manifestation (défilement pas à pas)
  • Possibilité de filtrer les équipements par type (ex. ne voir que les barrières Héras)
  • Possibilité d'ajouter des points d'attention sur la carte (symbole ! avec une description associée, pas de notion de temps pour ces éléments)
  • Affectation d'éléments de sécurité à une équipe, associés à une action (pose ou dépose)
  • Génération d'un planning par équipe (PDF)
  • Récupération d'un planning sur l'application mobile

Sprint 2 Backlog (du 24 novembre au 5 décembre)

Cette version vient compléter le prototype précédent en ajoutant les fonctionnalités nécessaires pour obtenir une première version exploitable de l'outil. Pour cela, il convient d'ajouter la possibilité de s'authentifier de manière sécurisée, de sauvegarder différents projets d'événements et d'enregistrer les informations chronologiques de pose et dépose des équipements liés aux points à sécuriser.

Fonctionnalités attendues (application lourde)

  • Authentification via login/mot de passe sécurisé pour accéder à l'application compte admin créé à l'installation (le mot de passe est demandé lors de l'installation)

Gestion des personnels

  • création, modification, suppression d'une personne (nom, prénom)
  • création, modification, suppression d'une équipe (numéro, nom, liste des membres)

Gestion des projets d'événement

  • création, modification, suppression d'un projet d'événement, identifié par un nom, une date et un ensemble de géométries permettant de le décrire (zone de couverture, tracé de la course, etc.)
  • sauvegarde des projets dans un format sécurisé non lisible hors de l'application
  • sélection et visualisation d'un projet existant
  • modification du projet sélectionné (ajout de point d'intérêt, modification, déplacement, suppression, récupération de nouveaux points via mobile, etc.)

Gestion des points à sécuriser

  • ajout d'indications temporelles liée à un point (dates et heures prévues de pose et de dépose)
  • affichage chronologique (listes) des points à sécuriser (une liste de pose et une liste de dépose)

Fonctionnalités attendues (application mobile)

  • Affectation du mobile à un projet d'événement via QRCode sur l'application lourde (transfert des informations globales sur le projet)
  • Visualisation des géométries liés au projet courant
  • Fonctionnalités de la v0 : saisie de points, géolocalistation, transfert vers l'application lourde

Sprint Backlog (du 12 au 21 novembre 2025)

Cette version constituera un prototype permettant de valider les choix technologiques (notamment sur les outils de cartographie et d'export des fichiers Excel).

Attention : les applications ne doivent pas dépendre d'une connexion internet, toutes les ressources doivent être disponibles localement

Fonctionnalités attendues (application lourde)

  • affichage d'une carte offline de Strasbourg
  • navigation
  • recherche d'une adresse ou d'un lieu
  • placement sur la carte d'un type équipement sélectionné dans une liste de choix (barrière, bloc béton, etc.) en indiquant le nombre d'éléments de ce type placés
  • export possible des informations au format Excel (à définir avec le client)
  • génération d'un fichier PDF pour impression de la carte avec les informations pertinentes

Fonctionnalités attendues (application mobile)

  • affichage de sa position actuelle
  • enregistrement d'un point d'intérêt (coordonnées GPS + commentaire textuel + photos)
  • affichage et ordonnancement de la liste des points d'intérêt
  • simulation d'un déplacement ordonné dans la liste des points d'intérêt (détection automatique de l'arrivée à un point puis guidage vers le suivant)

Qualité de développement

  • Un pipeline d'intégration continue doit être mis en place pour l'application web avec GitLab CI permettant de la builder, de la tester et d'analyser la qualité du code.
    • Un commit n'est validé que si son nom est conforme à Conventional Commits.
    • Le code TS/JS est vérifié à chaque push, mais l'échec est toléré.
    • Les tests unitaires sont réalisés à chaque push, et il est exigé qu'ils passent.
    • Les tests (linting et tests unitaires) ne sont réalisés que si un fichier de code a changé.
    • La couverture de code est affichée dans le readme.
    • Un backup des branches des features (non protégées contre les pushs directs) est réalisé tous les soirs et envoyé vers un dépôt privé distant.
  • Concevoir une image docker conteneurisant votre application web et qui puisse être déployée rapidement et facilement.
  • Trouver (ou concevoir) une solution technique permettant d'automatiser complètement l'intégration des modifications et le déploiement de votre application.
  • Ce déploiement automatique doit s'effectuer dès qu'une nouvelle version stable est disponible.

Conteneurisation

  1. Installer les dépendances (au premier run) :
./docker.sh install
  1. Configurer l'environnement de l'API :
cp api/.env.example api/.env
  1. Construire l'image Docker :
./docker.sh build
  1. Tester (optionnel) :
./docker.sh test
  1. Déployer :
./docker.sh deploy
  1. Vérifier :
./docker.sh status
  1. Accéder à l'application :
  1. Gestion de l'application :
./docker.sh logs
./docker.sh stop
./docker.sh clean
./docker.sh prune

Image Docker

Description de l'image Docker obtenue :

  • Build multi-stage (Node.js 22-alpine)
  • Taille (API + client lourd) : 887Mo
  • Tuiles + données OSM (fonctionnement offline), montées en bind mount
  • tini pour gérer les signaux

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors