{"id":16017931,"url":"https://github.com/sebsept/soignemoi-webcli","last_synced_at":"2025-04-05T03:24:36.649Z","repository":{"id":240038614,"uuid":"784907905","full_name":"SebSept/soignemoi-webcli","owner":"SebSept","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-16T19:28:07.000Z","size":1110,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T11:41:52.291Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SebSept.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-10T19:55:07.000Z","updated_at":"2024-07-16T19:28:13.000Z","dependencies_parsed_at":"2024-05-21T09:30:51.129Z","dependency_job_id":"79b4a5f3-f997-4f4d-bfd3-52678eb59f1e","html_url":"https://github.com/SebSept/soignemoi-webcli","commit_stats":null,"previous_names":["sebsept/soignemoi-webcli"],"tags_count":0,"template":false,"template_full_name":"SebSept/php-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebSept%2Fsoignemoi-webcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebSept%2Fsoignemoi-webcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebSept%2Fsoignemoi-webcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebSept%2Fsoignemoi-webcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SebSept","download_url":"https://codeload.github.com/SebSept/soignemoi-webcli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247282749,"owners_count":20913425,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-08T16:24:15.014Z","updated_at":"2025-04-05T03:24:36.632Z","avatar_url":"https://github.com/SebSept.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ecf SoigneMoi - Client web\n\nDemo.  \nProjet pour l'évaluation en cours de formation de mon Bachelor.\n\n## Installation\n\nL'installation et l'infrastucture sont déclinées en 2 variantes, la variante développement et la variante production.  \n\nDes exemples d'installation sont référencés dans le fichier .justfile et dans les workflows GitHub Actions.  \n[.justfile](.justfile)  \n[.github/workflows](.github/workflows)\n\nUtiliser le task runner [just](https://just.systems/man/en/) est recommandé et simplifiera le travail (et le developpement).\n\n### Exemple d'installation en développement\n\n#### Avec _just_\n\n- cloner le dépot\n- créer le réseau docker 'partage' (une seule fois) : `docker network create partage` (qui sert à communiquer avec l'api en local)\n- lancer la commande `just update`\n\n#### Sans _just_\n\n##### Première installation\n\n- cloner ce dépôt\n- créer le réseau docker 'partage' (une seule fois) : `docker network create partage` (qui sert à communiquer avec l'api en local)\n- configurer l'accès à l'api en modifiant le fichier _.env.local_ (faire une copie de _.env_ au préalable) (utiliser l'api de prod au besoin).\n\n##### Installations suivantes\n\n- lancer la création de l'infrastructure : `docker compose -f compose-dev.yaml up -d --build` (la détruire si elle est mise à jour (voir les recettes dans le fichier .justfile))\n- lancer l'installation du projet : `docker compose -f compose-dev.yaml exec -it php composer install`\n\nSi vous avez des problèmes de droits de fichier, il faut donner que les fichiers et dossiers appartiennent à l'utilisateur www-data (id 82 généralement)\net/ou à votre utilisateur local, pour modifier les fichiers.\nEn cas de problème, référez-vous au worflow de déploiement GitHub Actions : [.github/workflows/deploy.yaml](.github/workflows/deploy.yaml)\n\n---\n\nLe projet est accessible à l'adresse http://localhost:$NGINX_PORT (voir fichier _.env_) (ou simplement avec la commande `just browser`).\n\n## Création de la base de données\n\nPas de base de données pour le client.  \nSeule l'API nécessite une base de données.\n\nLa base de données est sur un volume docker persistant.  \n### Avec _just_\n`just db-create db-fixtures-load`\n\n### Sans _just_\n```shell\ndocker compose -f compose-dev.yaml exec -it php ./bin/console doctrine:database:drop --quiet --no-interaction --if-exists --force\ndocker compose -f compose-dev.yaml exec -it php ./bin/console doctrine:database:create --quiet --no-interaction\ndocker compose -f compose-dev.yaml exec -it php ./bin/console doctrine:schema:create --quiet --no-interaction\ndocker compose -f compose-dev.yaml exec -it php ./bin/console doctrine:fixture:load --no-interaction\n```\n\n## Identifiants de connexion\n\nLes identifiants de connexion sont définis dans les fixture (coté api).\n- patient@patient.com : hello\n- secretaire@secretaire.com : hello\n- doctor@doctor.com : hello\n\n## Charte Graphique\n\nJe n'ai pas encore réalisé de charte graphique, je vais le faire plus tard.  \n\nJ'ai réalisé les [wireframes](https://github.com/SebSept/ecf-docs/blob/main/livrables/4.conception%20technique/Wireframe%20v1%20-%20svg.zip) \n\n## Gestion de projet\n\nJ'ai opéré une gestion de projet relativement classique, suivi d'une phase plus agile, à partir de la fin de l'étape , après la première livraison.\n\nLes phases suivantes :\n\n1. Pré-démarrage ([livrable](https://github.com/SebSept/ecf-docs/blob/main/livrables/1.pr%C3%A9d%C3%A9marrage.odt)) \n2. Cadrage ([livrable](https://github.com/SebSept/ecf-docs/blob/main/livrables/2.cadrage.odt))\n3. Spécifications fonctionnelles, planification \u0026 chiffrage ([cahier des charges](https://github.com/SebSept/ecf-docs/blob/main/livrables/documents/cahier%20des%20charges%20v2.odt), [roadmap](https://github.com/SebSept/ecf-docs/blob/main/livrables/documents/Roadmap.gan), [planning](https://github.com/SebSept/ecf-docs/blob/main/livrables/documents/Planing.gan))\n4. Conception technique ([livrables](https://github.com/SebSept/ecf-docs/tree/main/livrables/4.conception%20technique))\n5. Réalisation technique\n6. Tests et correctifs\n7. Mise en production, formation, maintenance\n8. Garanties\n\n[depot dédié aux documents](https://github.com/SebSept/ecf-docs).  \nJ'ai également utilisé Kanboard pour la phase _agile_ (lien donné avec la copie du projet).\n\n## Documentation technique\n\n### Reflexion initiale technologique sur le sujet\n\nExtrait de la note de prédémarrage :\n\n\u003e Les choix techniques seront réalisés de façon à produire une solution robuste, standard et maintenable. Dans un soucis de réduction des temps de développement et de formation, les technologies de référence seront préférées.\n\nPour la developpement et la mise en production j'ai décider de m'appuyer sur Docker pour simplifier le travail de déploiement et de réplication.\n\nJ'ai choisi _GitHub_ pour héberger le code et qui permet d'automatiser les taches de déploiement et de contrôle du code.\n\nJ'ai également décider d'adopter une approche _api first_ et de construire un client web complètement indépendant de l'api (machine différente).\nSymfony répond aux éxigences de qualité et robusteste et maintenabilité évoquée plus haut. Api Platform est un choix pertinent (qualité, maturité) pour la construction de l'api avec Symfony.\n\nEn résumé ma première approche de la question s'est faite au regard de l'architecture et du déploiement et de la qualité du code.\n\n\n### Configuration de l'environnement de travail\n\nPour l'environnement de travail, j'ai choisi de réduire au maximum les besoins sur les machines hotes (developpeur, ci, production). Je me suis donc appuyé sur Docker et Docker Compose.  \nOn a ainsi une configuration de l'environnement de travail très simple et complètement identique (à la différence des versions de Docker qui peuvent différer sans que cela ne pose de problème).\n\nOn a ainsi uniquement Docker, Docker Compose et git à installer sur la machine hote.\n\n### MCD - Modèle Conceptuel de Données\n\nLe diagrame MCD à été généré a posterio, car Doctrine génère ce qui concerne les tables de la base de données.  \n\nLe diagramme est inclu dans le document, [Conception technique](https://github.com/SebSept/ecf-docs/blob/main/livrables/4.conception%20technique/Conception%20technique.odt).\n\nIl sera aussi pertinent d'offir une représentation des données de l'api (api platform offre ces possibilités).\n\n### Diagramme d'utilisation\n\nPas encore réalisé, prochainement.\n\n## Plan de test\n\nNous avons les composant sécurité, routage, api plateform, validation et doctrine. La plupart de ces composants demandent uniquement de la configuration pour fonctionner, et fonctionner ensemble. Dans ce cadre, j'ai mis l'accent sur les tests d'intégration.  \nJ'ai developpé quelques tests unitaires, très peu étaient possible, d'autres  reposent cependant sur des mocks et sont ainsi moins pertinents.  \nJ'ai réalisé quelques tests fonctionnels (très basiques) pour vérifier que le client et le serveur communiquent correctement, notament au niveau de l'authentification (obtention de token). \n\n## Kanban\n\nLien donné dans la copie.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebsept%2Fsoignemoi-webcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebsept%2Fsoignemoi-webcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebsept%2Fsoignemoi-webcli/lists"}