SocialGouv / support

Support de l'activité des startups SocialGouv
http://socialgouv.github.io/support
7 stars 5 forks source link

[OZ] Revue de l'application #618

Open gary-van-woerkens opened 3 weeks ago

gary-van-woerkens commented 3 weeks ago

Rapport d'Audit de l'Application Mobile OzEnsemble et son API

Le résultat de l'audit est plutôt positif. Le code est "propre" relativement bien organisé et clair. Les dépendances utilisées sont tres standards. Un seul chantier à prévoir: le remplacement du matomo_id par une clé primaire plus classique (UUID, Int auto increment...).

Grille d'Évaluation

Critère Score (1-5) Statut
Structure et Organisation 5 OK
Qualité du Code 4 OK
Performance 4 OK
🚨 Gestion des Erreurs 3 KO
🚨 Tests 2 KO
🚨 Accessibilité 1 KO
Sécurité 3 KO
Build et Déploiement 3 KO
Documentation 5 OK
Bibliothèques et Dépendances 5 OK
Expérience Utilisateur (UX) 5 OK

Audit

Choix Techniques

Élément Détails Statut
Framework Mobile React Native est utilisé comme cadre principal pour le développement mobile. Il permet un développement multi-plateforme efficace. OK
Utilisation d'Expo L'application n'utilise pas Expo, ce qui est un choix légitime compte tenu des besoins spécifiques du projet, malgré les avantages d'Expo pour le prototypage rapide. OK
Gestion d'État Recoil est utilisé pour la gestion de l'état, assurant un flux de données propre et maintenable à travers l'application. OK
Navigation React Navigation est utilisé comme standard unique pour gérer la navigation au sein de l'application, assurant une cohérence et une simplicité d'utilisation. OK
Stylisation Styled-Components et Nativewind sont utilisés pour la stylisation, des choix populaires qui permetent une gestion dynamique et modulaire des styles. OK
Backend Express est utilisé comme framework pour le backend, ce qui est un standard largement accepté et robuste pour les applications web. OK
ORM Prisma est utilisé comme ORM. Choix pertinent malgré le fait qu'il implique des limitations côté Postgres. OK
🚨 Typage TypeScript n'est pas utilisé, bien qu'il soit recommandé pour améliorer la maintenabilité et la robustesse du code. KO
Notifications Push FCM est utilisé pour les notifications push, ce qui est un standard unique et fiable pour ce type de fonctionnalité. OK

Base de Données

Élément Détails Statut
Modèle de Données Le modèle de données est normalisé, ce qui assure la cohérence et l'intégrité des données au sein de la base de données. OK
Migrations Système propre de migrations géré via Prisma, permettant de maintenir la base de données à jour avec les évolutions du schéma. OK
Sécurité L'utilisation de l'ORM Prisma assure qu'il n'y a pas d'injection SQL possible, bien qu'une vérification supplémentaire soit nécessaire pour s'assurer qu'il n'y a pas de concaténations de chaînes dangereuses dans le code. OK

Résilience

Élément Détails Statut
Stratégie de Données La stratégie Local First est adoptée, assurant que l'application fonctionne même sans connexion Internet en priorisant les données locales. OK
Rétro-Compatibilité Gestion de la rétro-compatibilité et blocage des versions non maintenues, ce qui assure que les utilisateurs utilisent toujours une version fonctionnelle et supportée de l'application. OK

Documentation Technique

Élément Détails Statut
Documentation La documentation est exhaustive sur les structures de données et offre une présentation complète et cohérente des différentes parties du projet. OK

Dette Technique

Élément Détails Statut
Évaluation La dette technique semble minimale, ce qui indique un bon maintien du code et de ses dépendences. OK

Tests

Élément Détails Statut
🚨 Tests End-to-End (E2E) (ou intégration ?) Les tests E2E sont actuellement insuffisants, la couverture devrait être améliorée. KO
Tests Unitaires Les tests unitaires ne sont pas encore implémentés, mais ils sont prévu dans la feuille de route du projet. KO
Procédures de Recettage Des procédures élégantes de recettage sont en place pour faciliter les tests et la validation des fonctionnalités. OK

Accessibilité (RGAA)

Élément Détails Statut
Conformité RGAA L'application ne répond pas encore aux normes RGAA, ce qui est nécessaire pour assurer l'accessibilité à tous les utilisateurs. KO

Conformité RGPD

Élément Détails Statut
Respect du RGPD L'application est conforme au RGPD, assurant la protection des données personnelles des utilisateurs. OK

Structure des Fichiers du Code Source

Élément Détails Statut
Application L'organisation du code de l'application est classique et propre, divisée en scenes, components, et model (Recoil). OK
Backend Le code du backend est bien découplé et propre (route, controllers, services, utils), ce qui facilite la maintenabilité et la compréhension du projet. OK

Design System

Élément Détails Statut
Design System de l'État L'application n'utilise pas le Design System de l'État Français (DSFR), ce qui pourrait améliorer la cohérence visuelle et l'accessibilité si adopté. KO

Collaboration Open Source

Élément Détails Statut
Collaboration Open Source La collaboration open source est facilitée via le dépôt de code GitHub, ne nécessitant pas de secrets particuliers pour que l'application puisse fonctionner en local. OK

Confidentialité

Élément Détails Statut
Sécurité des ID Les ID sont sécurisés et le tracking est anonyme, assurant la confidentialité des utilisateurs. OK

Problèmes Identifiés

Élément Détails Lien Statut
🚨 Matomo ID Problème avec l'ID Matomo Lien vers le code KO
IPs, isWellLocated Problème de gestion des IPs et de localisation Lien vers le code KO
URLs Hard Codées URLs hard codées dans le code Lien vers le code KO
Conflit de Styles Conflit entre Styled-Components et NativeWind KO
Code Mort Présence de code non utilisé (dead code) Lien vers le code KO
arnaudambro commented 2 weeks ago

Note personnelles techniques de notre réunion de ce matin avec @gary-van-woerkens listant concrètement les choses à faire (cc @YoanRos)