[{"data":1,"prerenderedAt":2955},["ShallowReactive",2],{"projects-with-translations-fr":3},[4,242,454,755,936,1116,1447,1682,1915,2125,2339,2549,2782],{"name":5,"primaryColor":6,"secondaryColor":7,"logoUrl":8,"categories":9,"sectors":11,"date":13,"shortDescription":14,"longDescription":15,"siteUrl":218,"stack":219,"repoUrl":224,"media1":225,"media2":226,"route":227,"tags":228,"metaTitle":239,"metaDescription":240,"isFavorite":241},"A2M Ôrizon Solution — Site vitrine avec CMS pour entreprise de services sociaux","#004aad","#ec9e0a","https://a.storyblok.com/f/290162729601023/192x192/d7d67031a1/a2m-logo.png",[10],"site-web",[12],"sante","2025-12-10 00:00","Site vitrine professionnel avec CMS headless permettant à une entreprise de services sociaux de présenter ses activités, publier des articles et gérer facilement son contenu.",{"type":16,"content":17},"doc",[18,27,33,38,43,48,53,85,90,95,113,118,123,128,133,198,203,208,213],{"type":19,"attrs":20,"content":23},"heading",{"level":21,"textAlign":22},2,null,[24],{"text":25,"type":26},"Contexte","text",{"type":28,"attrs":29,"content":30},"paragraph",{"textAlign":22},[31],{"text":32,"type":26},"A2M ÔRIZON SOLUTION est une entreprise spécialisée dans l'accompagnement social externalisé pour des structures médico-sociales, des entreprises et des particuliers.",{"type":28,"attrs":34,"content":35},{"textAlign":22},[36],{"text":37,"type":26},"La cliente avait besoin d'un site web professionnel permettant de présenter ses services, améliorer sa visibilité en ligne et publier du contenu informatif pour ses visiteurs.",{"type":28,"attrs":39,"content":40},{"textAlign":22},[41],{"text":42,"type":26},"Le projet a été réalisé en freelance, depuis la phase de conception jusqu'à la mise en production. L'objectif était de concevoir un site moderne, rapide et facilement administrable par la cliente.Problème",{"type":28,"attrs":44,"content":45},{"textAlign":22},[46],{"text":47,"type":26},"Avant ce projet, l'entreprise ne disposait pas d'un site web structuré pour présenter son activité et générer des contacts.",{"type":28,"attrs":49,"content":50},{"textAlign":22},[51],{"text":52,"type":26},"Les principaux enjeux étaient :",{"type":54,"content":55},"bullet_list",[56,64,71,78],{"type":57,"content":58},"list_item",[59],{"type":28,"attrs":60,"content":61},{"textAlign":22},[62],{"text":63,"type":26},"disposer d'un site professionnel crédible",{"type":57,"content":65},[66],{"type":28,"attrs":67,"content":68},{"textAlign":22},[69],{"text":70,"type":26},"faciliter la gestion du contenu sans compétences techniques",{"type":57,"content":72},[73],{"type":28,"attrs":74,"content":75},{"textAlign":22},[76],{"text":77,"type":26},"améliorer le référencement naturel",{"type":57,"content":79},[80],{"type":28,"attrs":81,"content":82},{"textAlign":22},[83],{"text":84,"type":26},"permettre la publication régulière d'articles et de ressources.",{"type":28,"attrs":86,"content":87},{"textAlign":22},[88],{"text":89,"type":26},"Il fallait donc concevoir une solution simple à utiliser pour la cliente tout en conservant de bonnes performances techniques et SEO.",{"type":19,"attrs":91,"content":92},{"level":21,"textAlign":22},[93],{"text":94,"type":26},"Solution",{"type":28,"attrs":96,"content":97},{"textAlign":22},[98,100,105,107,111],{"text":99,"type":26},"Le site a été développé avec ",{"text":101,"type":26,"marks":102},"Nuxt 4 et Vue 3",[103],{"type":104},"bold",{"text":106,"type":26},", en utilisant un ",{"text":108,"type":26,"marks":109},"CMS headless Storyblok",[110],{"type":104},{"text":112,"type":26}," pour permettre à la cliente de gérer l'ensemble du contenu.",{"type":28,"attrs":114,"content":115},{"textAlign":22},[116],{"text":117,"type":26},"Cette architecture permet de séparer complètement la gestion du contenu et l'interface utilisateur, ce qui offre une grande flexibilité pour créer ou modifier les pages du site.",{"type":28,"attrs":119,"content":120},{"textAlign":22},[121],{"text":122,"type":26},"Un système de déploiement continu a également été mis en place afin que chaque modification du code soit automatiquement construite et déployée.",{"type":28,"attrs":124,"content":125},{"textAlign":22},[126],{"text":127,"type":26},"L'ensemble du site a été conçu pour être performant, responsive et optimisé pour le référencement.",{"type":19,"attrs":129,"content":130},{"level":21,"textAlign":22},[131],{"text":132,"type":26},"Fonctionnalités principales",{"type":54,"content":134},[135,142,149,156,163,170,177,184,191],{"type":57,"content":136},[137],{"type":28,"attrs":138,"content":139},{"textAlign":22},[140],{"text":141,"type":26},"site vitrine présentant l'activité et les services de l'entreprise",{"type":57,"content":143},[144],{"type":28,"attrs":145,"content":146},{"textAlign":22},[147],{"text":148,"type":26},"CMS headless permettant d'éditer tout le contenu (pages, blog, FAQ, images)",{"type":57,"content":150},[151],{"type":28,"attrs":152,"content":153},{"textAlign":22},[154],{"text":155,"type":26},"éditeur d'articles et de blog directement dans le CMS",{"type":57,"content":157},[158],{"type":28,"attrs":159,"content":160},{"textAlign":22},[161],{"text":162,"type":26},"création et modification de pages dynamiques",{"type":57,"content":164},[165],{"type":28,"attrs":166,"content":167},{"textAlign":22},[168],{"text":169,"type":26},"optimisation SEO complète (meta dynamiques, sitemap, Open Graph)",{"type":57,"content":171},[172],{"type":28,"attrs":173,"content":174},{"textAlign":22},[175],{"text":176,"type":26},"structure de contenu optimisée pour le référencement",{"type":57,"content":178},[179],{"type":28,"attrs":180,"content":181},{"textAlign":22},[182],{"text":183,"type":26},"analytics respectueux de la vie privée avec Umami",{"type":57,"content":185},[186],{"type":28,"attrs":187,"content":188},{"textAlign":22},[189],{"text":190,"type":26},"interface responsive adaptée mobile, tablette et desktop",{"type":57,"content":192},[193],{"type":28,"attrs":194,"content":195},{"textAlign":22},[196],{"text":197,"type":26},"déploiement continu automatique via GitHub Actions.",{"type":19,"attrs":199,"content":200},{"level":21,"textAlign":22},[201],{"text":202,"type":26},"Résultats",{"type":28,"attrs":204,"content":205},{"textAlign":22},[206],{"text":207,"type":26},"Le site permet désormais à l'entreprise de présenter clairement son activité et de publier du contenu informatif pour ses visiteurs.",{"type":28,"attrs":209,"content":210},{"textAlign":22},[211],{"text":212,"type":26},"La cliente peut modifier facilement les textes, images et articles via le CMS sans intervention technique.",{"type":28,"attrs":214,"content":215},{"textAlign":22},[216],{"text":217,"type":26},"Le projet démontre également la capacité à concevoir et livrer un projet freelance complet, depuis la conception et la maquette jusqu'à la mise en production et la configuration de l'infrastructure.","https://a2m-orizon-solutionsocial.fr/",[220,221,222,223],"Nuxt.js","Vue.js","TypeScript","TailwindCSS","https://github.com/Leoglme/a2m-orizon-solution","https://a.storyblok.com/f/290162729601023/1919x1079/e10d2ce017/capture-d-ecran-2026-03-21-005433.png","https://a.storyblok.com/f/290162729601023/1919x1079/be8f24c973/capture-d-ecran-2026-03-21-005512.png","/project/a2m-orizon-solution",[229,230,231,232,233,234,235,236,237,238],"site vitrine","nuxt","cms headless","storyblok","seo","site professionnel","blog cms","vuejs","freelance","site entreprise","A2M Ôrizon Solution — Site vitrine Nuxt avec CMS Storyblok","Site vitrine professionnel développé avec Nuxt et Storyblok pour une entreprise de services sociaux. CMS éditable, blog intégré et optimisation SEO complète.",true,{"name":243,"primaryColor":244,"secondaryColor":245,"logoUrl":246,"categories":247,"sectors":250,"date":253,"shortDescription":254,"longDescription":255,"siteUrl":434,"stack":435,"repoUrl":438,"media1":439,"media2":440,"route":441,"tags":442,"metaTitle":243,"metaDescription":453,"isFavorite":241},"Izidoor — Plateforme SaaS de réservation Sport & Loisirs","#5661f7","#ffffff","https://a.storyblok.com/f/290162729601023/904c43854d/izidoor.png",[10,248,249],"saas","application-metier",[251,252],"sport-loisirs","b2b","2025-07-01","Plateforme SaaS de réservation et de gestion dédiée aux clubs sportifs et structures de loisirs.",{"type":16,"content":256},[257,261,265,269,273,278,282,286,312,316,320,324,328,332,364,368,372,422,426,430],{"type":19,"attrs":258,"content":259},{"level":21},[260],{"text":25,"type":26},{"type":28,"content":262},[263],{"text":264,"type":26},"Izidoor est une plateforme SaaS et logiciel de réservation et de gestion dédiée aux structures proposant des activités encadrées : écoles de surf, centres nautiques, écoles de ski, activités de kayak, pêche ou location de vélos.",{"type":28,"content":266},[267],{"text":268,"type":26},"La solution centralise dans un seul outil la réservation en ligne et la gestion opérationnelle de l'activité : planification des sessions, catalogue d'activités et de produits, gestion des équipes et des moniteurs, facturation et encaissement sur place.",{"type":28,"content":270},[271],{"text":272,"type":26},"Chaque structure dispose d'un module de réservation intégré directement sur son site web, permettant aux clients de réserver et payer leurs activités en ligne de manière autonome.",{"type":19,"attrs":274,"content":275},{"level":21},[276],{"text":277,"type":26},"Problème",{"type":28,"content":279},[280],{"text":281,"type":26},"De nombreuses structures de loisirs gèrent encore leurs réservations avec plusieurs outils distincts : téléphone, tableurs, paiements manuels et planning séparé.",{"type":28,"content":283},[284],{"text":285,"type":26},"Cette organisation fragmentée entraîne :",{"type":54,"content":287},[288,294,300,306],{"type":57,"content":289},[290],{"type":28,"content":291},[292],{"text":293,"type":26},"une charge administrative importante",{"type":57,"content":295},[296],{"type":28,"content":297},[298],{"text":299,"type":26},"des risques d'erreurs dans les réservations",{"type":57,"content":301},[302],{"type":28,"content":303},[304],{"text":305,"type":26},"des difficultés à suivre les disponibilités en temps réel",{"type":57,"content":307},[308],{"type":28,"content":309},[310],{"text":311,"type":26},"une perte de réservations lorsque les clients ne peuvent pas joindre la structure.",{"type":28,"content":313},[314],{"text":315,"type":26},"Pour des activités saisonnières comme le surf, le ski ou le kayak, ces limites deviennent rapidement un frein à l'organisation quotidienne.",{"type":19,"attrs":317,"content":318},{"level":21},[319],{"text":94,"type":26},{"type":28,"content":321},[322],{"text":323,"type":26},"Izidoor centralise l'ensemble de la gestion dans une seule plateforme.",{"type":28,"content":325},[326],{"text":327,"type":26},"Les structures peuvent proposer la réservation en ligne directement depuis leur site, gérer leurs activités depuis un planning interactif et suivre les commandes, paiements et participants depuis le back-office.",{"type":28,"content":329},[330],{"text":331,"type":26},"Le système permet notamment :",{"type":54,"content":333},[334,340,346,352,358],{"type":57,"content":335},[336],{"type":28,"content":337},[338],{"text":339,"type":26},"la réservation en ligne avec paiement Stripe",{"type":57,"content":341},[342],{"type":28,"content":343},[344],{"text":345,"type":26},"le paiement total ou par acompte",{"type":57,"content":347},[348],{"type":28,"content":349},[350],{"text":351,"type":26},"la gestion des commandes et des participants",{"type":57,"content":353},[354],{"type":28,"content":355},[356],{"text":357,"type":26},"l'encaissement sur place via une caisse intégrée",{"type":57,"content":359},[360],{"type":28,"content":361},[362],{"text":363,"type":26},"la gestion des disponibilités et des périodes d'activité.",{"type":28,"content":365},[366],{"text":367,"type":26},"La plateforme est conçue pour fonctionner aussi bien pour des écoles de surf, des centres nautiques ou des moniteurs indépendants.",{"type":19,"attrs":369,"content":370},{"level":21},[371],{"text":132,"type":26},{"type":54,"content":373},[374,380,386,392,398,404,410,416],{"type":57,"content":375},[376],{"type":28,"content":377},[378],{"text":379,"type":26},"réservation en ligne intégrée au site web",{"type":57,"content":381},[382],{"type":28,"content":383},[384],{"text":385,"type":26},"planning interactif des sessions et activités",{"type":57,"content":387},[388],{"type":28,"content":389},[390],{"text":391,"type":26},"gestion des produits et activités",{"type":57,"content":393},[394],{"type":28,"content":395},[396],{"text":397,"type":26},"gestion des moniteurs et des équipes",{"type":57,"content":399},[400],{"type":28,"content":401},[402],{"text":403,"type":26},"gestion des participants et des clients",{"type":57,"content":405},[406],{"type":28,"content":407},[408],{"text":409,"type":26},"facturation automatique",{"type":57,"content":411},[412],{"type":28,"content":413},[414],{"text":415,"type":26},"caisse pour les paiements sur place",{"type":57,"content":417},[418],{"type":28,"content":419},[420],{"text":421,"type":26},"gestion des disponibilités et des périodes saisonnières.",{"type":28,"content":423},[424],{"text":425,"type":26},"Izidoor agit comme un véritable logiciel de gestion pour structures sportives et activités de loisirs.",{"type":19,"attrs":427,"content":428},{"level":21},[429],{"text":202,"type":26},{"type":28,"content":431},[432],{"text":433,"type":26},"Izidoor est aujourd'hui utilisé par des structures sportives et de loisirs en France pour digitaliser leur gestion des réservations et simplifier l'organisation de leurs activités.","https://info.izidoor.io/",[220,221,222,436,437,223],"GraphQL","PostgreSQL","","https://a.storyblok.com/f/290162729601023/1024x768/cff1789567/1-photoroom-png-photoroom.webp","https://a.storyblok.com/f/290162729601023/720x540/284d22482a/izidoor-reservation-petit.webp","/project/izidoor",[443,444,445,446,447,448,449,450,451,452],"plateforme de réservation","gestion des réservations","sport et loisirs","back-office","facturation","planning","caisse","SaaS","entreprises","France","Plateforme SaaS de réservation et back-office pour structures sportives et de loisirs : planning, paiements, facturation et gestion des équipes. Solution fiable et scalable.",{"name":455,"primaryColor":456,"secondaryColor":457,"logoUrl":458,"categories":459,"sectors":461,"date":462,"shortDescription":463,"longDescription":464,"siteUrl":736,"stack":737,"repoUrl":740,"media1":741,"media2":742,"route":743,"tags":744,"metaTitle":753,"metaDescription":754,"isFavorite":241},"AI Pneumonia Detector – Détection de pneumonie par IA","#00bbc0","#002742","https://a.storyblok.com/f/290162729601023/da0adb62e9/ai-pneumonia-detector.png",[10,460],"ia",[12],"2024-07-01","Application web utilisant l'intelligence artificielle pour analyser des radiographies pulmonaires et détecter la présence d'une pneumonie. Le projet compare deux approches de machine learning (CNN et KNN) et permet de tester les modèles en ligne via une interface interactive.",{"type":16,"content":465},[466,470,475,486,491,495,500,523,540,544,549,558,567,578,583,588,593,623,627,671,675,680,691,715,731],{"type":19,"attrs":467,"content":468},{"level":21,"textAlign":22},[469],{"text":25,"type":26},{"type":28,"attrs":471,"content":472},{"textAlign":22},[473],{"text":474,"type":26},"La pneumonie est une infection pulmonaire pouvant être détectée à partir de radiographies thoraciques. L'analyse de ces images nécessite généralement l'expertise d'un professionnel de santé, mais les techniques de machine learning permettent aujourd'hui d'automatiser une partie de cette détection.",{"type":28,"attrs":476,"content":477},{"textAlign":22},[478,480,484],{"text":479,"type":26},"AI Pneumonia Detector est un prototype d'application IA médicale permettant d'analyser des radiographies pulmonaires afin d'identifier la présence éventuelle d'une pneumonie. Le projet s'appuie sur un dataset de ",{"text":481,"type":26,"marks":482},"5856 radiographies réelles",[483],{"type":104},{"text":485,"type":26}," fournies dans le cadre du cursus ingénieur IA/Data à Epitech.",{"type":28,"attrs":487,"content":488},{"textAlign":22},[489],{"text":490,"type":26},"L'objectif du projet est de comparer différentes approches d'apprentissage automatique pour la classification d'images médicales et d'explorer leur efficacité dans la détection de pathologies pulmonaires.",{"type":19,"attrs":492,"content":493},{"level":21,"textAlign":22},[494],{"text":277,"type":26},{"type":28,"attrs":496,"content":497},{"textAlign":22},[498],{"text":499,"type":26},"L'analyse de radiographies médicales repose généralement sur l'expertise humaine. Cependant, dans certains contextes, l'utilisation d'outils d'aide à la décision basés sur l'intelligence artificielle peut permettre :",{"type":54,"content":501},[502,509,516],{"type":57,"content":503},[504],{"type":28,"attrs":505,"content":506},{"textAlign":22},[507],{"text":508,"type":26},"d'accélérer l'analyse d'images médicales",{"type":57,"content":510},[511],{"type":28,"attrs":512,"content":513},{"textAlign":22},[514],{"text":515,"type":26},"d'assister les professionnels de santé",{"type":57,"content":517},[518],{"type":28,"attrs":519,"content":520},{"textAlign":22},[521],{"text":522,"type":26},"d'identifier des anomalies visuelles dans les radiographies.",{"type":28,"attrs":524,"content":525},{"textAlign":22},[526,528,532,534,538],{"text":527,"type":26},"Le défi consiste à entraîner un modèle capable de distinguer correctement des radiographies pulmonaires ",{"text":529,"type":26,"marks":530},"normales",[531],{"type":104},{"text":533,"type":26}," de celles présentant des signes de ",{"text":535,"type":26,"marks":536},"pneumonie",[537],{"type":104},{"text":539,"type":26},", tout en évaluant la fiabilité des prédictions.",{"type":19,"attrs":541,"content":542},{"level":21,"textAlign":22},[543],{"text":94,"type":26},{"type":28,"attrs":545,"content":546},{"textAlign":22},[547],{"text":548,"type":26},"L'application met en œuvre deux approches de machine learning pour la classification des radiographies :",{"type":54,"content":550},[551],{"type":57,"content":552},[553],{"type":28,"attrs":554,"content":555},{"textAlign":22},[556],{"text":557,"type":26},"Un modèle CNN (Convolutional Neural Network) spécialisé dans l'analyse d'images.",{"type":54,"content":559},[560],{"type":57,"content":561},[562],{"type":28,"attrs":563,"content":564},{"textAlign":22},[565],{"text":566,"type":26},"Un modèle KNN (K-Nearest Neighbors) servant de base de comparaison avec une approche de machine learning plus simple.",{"type":28,"attrs":568,"content":569},{"textAlign":22},[570,572,576],{"text":571,"type":26},"Les radiographies sont prétraitées en images ",{"text":573,"type":26,"marks":574},"grayscale",[575],{"type":104},{"text":577,"type":26}," et redimensionnées avant d'être utilisées pour l'entraînement des modèles.",{"type":28,"attrs":579,"content":580},{"textAlign":22},[581],{"text":582,"type":26},"Le modèle CNN exploite une architecture de réseaux de neurones convolutifs permettant d'extraire automatiquement des caractéristiques visuelles pertinentes à partir des images.",{"type":28,"attrs":584,"content":585},{"textAlign":22},[586],{"text":587,"type":26},"Une interface web permet ensuite de tester les modèles en temps réel.",{"type":28,"attrs":589,"content":590},{"textAlign":22},[591],{"text":592,"type":26},"Les utilisateurs peuvent :",{"type":54,"content":594},[595,602,609,616],{"type":57,"content":596},[597],{"type":28,"attrs":598,"content":599},{"textAlign":22},[600],{"text":601,"type":26},"sélectionner des radiographies d'exemple",{"type":57,"content":603},[604],{"type":28,"attrs":605,"content":606},{"textAlign":22},[607],{"text":608,"type":26},"importer leurs propres images",{"type":57,"content":610},[611],{"type":28,"attrs":612,"content":613},{"textAlign":22},[614],{"text":615,"type":26},"obtenir une prédiction instantanée (NORMAL ou PNEUMONIA)",{"type":57,"content":617},[618],{"type":28,"attrs":619,"content":620},{"textAlign":22},[621],{"text":622,"type":26},"consulter les probabilités associées à chaque classe.",{"type":19,"attrs":624,"content":625},{"level":21,"textAlign":22},[626],{"text":132,"type":26},{"type":54,"content":628},[629,636,643,650,657,664],{"type":57,"content":630},[631],{"type":28,"attrs":632,"content":633},{"textAlign":22},[634],{"text":635,"type":26},"analyse de radiographies pulmonaires par IA",{"type":57,"content":637},[638],{"type":28,"attrs":639,"content":640},{"textAlign":22},[641],{"text":642,"type":26},"comparaison de deux approches de machine learning (CNN vs KNN)",{"type":57,"content":644},[645],{"type":28,"attrs":646,"content":647},{"textAlign":22},[648],{"text":649,"type":26},"interface web interactive pour tester les modèles",{"type":57,"content":651},[652],{"type":28,"attrs":653,"content":654},{"textAlign":22},[655],{"text":656,"type":26},"import d'images personnalisées pour l'analyse",{"type":57,"content":658},[659],{"type":28,"attrs":660,"content":661},{"textAlign":22},[662],{"text":663,"type":26},"affichage des probabilités de classification",{"type":57,"content":665},[666],{"type":28,"attrs":667,"content":668},{"textAlign":22},[669],{"text":670,"type":26},"visualisation des métriques de performance.",{"type":19,"attrs":672,"content":673},{"level":21,"textAlign":22},[674],{"text":202,"type":26},{"type":28,"attrs":676,"content":677},{"textAlign":22},[678],{"text":679,"type":26},"Les deux modèles ont été évalués sur un jeu de test indépendant.",{"type":28,"attrs":681,"content":682},{"textAlign":22},[683,685,689],{"text":684,"type":26},"Le modèle ",{"text":686,"type":26,"marks":687},"CNN",[688],{"type":104},{"text":690,"type":26}," obtient les meilleures performances avec :",{"type":54,"content":692},[693,704],{"type":57,"content":694},[695],{"type":28,"attrs":696,"content":697},{"textAlign":22},[698,700],{"text":699,"type":26},"une précision d'environ ",{"text":701,"type":26,"marks":702},"95%",[703],{"type":104},{"type":57,"content":705},[706],{"type":28,"attrs":707,"content":708},{"textAlign":22},[709,711],{"text":710,"type":26},"une courbe ROC avec une ",{"text":712,"type":26,"marks":713},"AUC proche de 0.99",[714],{"type":104},{"type":28,"attrs":716,"content":717},{"textAlign":22},[718,719,723,725,729],{"text":684,"type":26},{"text":720,"type":26,"marks":721},"KNN",[722],{"type":104},{"text":724,"type":26}," atteint une précision d'environ ",{"text":726,"type":26,"marks":727},"93%",[728],{"type":104},{"text":730,"type":26},", démontrant qu'une approche plus simple peut déjà produire des résultats corrects, mais reste moins performante qu'un réseau de neurones convolutif pour l'analyse d'images médicales.",{"type":28,"attrs":732,"content":733},{"textAlign":22},[734],{"text":735,"type":26},"Ces résultats confirment l'efficacité des modèles de deep learning pour la classification d'images radiographiques.","https://ai-pneumonia-detector.dibodev.fr/",[221,222,223,738,739],"Python","FastAPI","https://github.com/Leoglme/ai-pneumonia-detector","https://a.storyblok.com/f/290162729601023/fd43e1b7d9/ai-pneumonia-detector-desktop.png","https://a.storyblok.com/f/290162729601023/238f568a5d/ai-pneumonia-detector-mobile.png","/project/ai-pneumonia-detector",[745,746,747,748,749,750,751,752],"détection de pneumonie","imagerie médicale","radiographie thoracique","intelligence artificielle santé","diagnostic assisté","classification d’images","projet IA","démonstration en ligne","AI Pneumonia Detector — Analyse de radiographies pulmonaires par IA","Application web d'intelligence artificielle permettant d'analyser des radiographies pulmonaires pour détecter la pneumonie. Démo interactive avec comparaison de modèles CNN et KNN et visualisation des métriques.",{"name":756,"primaryColor":757,"secondaryColor":758,"logoUrl":759,"categories":760,"sectors":761,"date":763,"shortDescription":764,"longDescription":765,"siteUrl":917,"stack":918,"repoUrl":922,"media1":923,"media2":924,"route":925,"tags":926,"metaTitle":756,"metaDescription":935,"isFavorite":241},"ApartEasy — Centralisez et partagez vos annonces immobilières","#d30a5e","#0e1621","https://a.storyblok.com/f/290162729601023/4519916f85/aparteasy.png",[10],[762],"immobilier","2023-05-22","Application collaborative permettant de centraliser, organiser et partager des annonces immobilières lors d'une recherche de logement, seul ou en groupe.",{"type":16,"content":766},[767,771,775,779,789,793,797,823,827,831,835,839,843,847,851,901,905,909,913],{"type":19,"attrs":768,"content":769},{"level":21},[770],{"text":25,"type":26},{"type":28,"content":772},[773],{"text":774,"type":26},"Lors d'une recherche de logement, les annonces sont souvent dispersées sur plusieurs plateformes : Leboncoin, SeLoger, agences immobilières ou réseaux sociaux. Les favoris sont répartis sur différents sites et il devient rapidement difficile de suivre les annonces intéressantes, de comparer les logements ou de partager les découvertes avec d'autres personnes.",{"type":28,"content":776},[777],{"text":778,"type":26},"ApartEasy est une application web conçue pour simplifier cette étape en centralisant toutes les annonces immobilières dans un seul espace de travail. L'outil permet d'organiser une recherche de logement seul ou en groupe, par exemple en couple ou en colocation.",{"type":28,"content":780},[781,783,787],{"text":782,"type":26},"Chaque recherche se fait dans un espace dédié appelé ",{"text":784,"type":26,"marks":785},"space",[786],{"type":104},{"text":788,"type":26},", contenant un nom et une localisation de référence utilisée pour calculer les distances et temps de trajet.",{"type":19,"attrs":790,"content":791},{"level":21},[792],{"text":277,"type":26},{"type":28,"content":794},[795],{"text":796,"type":26},"Lorsqu'on recherche un appartement, plusieurs difficultés apparaissent rapidement :",{"type":54,"content":798},[799,805,811,817],{"type":57,"content":800},[801],{"type":28,"content":802},[803],{"text":804,"type":26},"les annonces sont dispersées sur plusieurs sites",{"type":57,"content":806},[807],{"type":28,"content":808},[809],{"text":810,"type":26},"les liens intéressants sont difficiles à retrouver",{"type":57,"content":812},[813],{"type":28,"content":814},[815],{"text":816,"type":26},"il est compliqué de comparer plusieurs biens efficacement",{"type":57,"content":818},[819],{"type":28,"content":820},[821],{"text":822,"type":26},"la coordination avec d'autres personnes (colocataire, partenaire, amis) devient confuse.",{"type":28,"content":824},[825],{"text":826,"type":26},"Les échanges se font souvent via messages ou captures d'écran, ce qui rend le suivi des annonces peu clair et inefficace.",{"type":19,"attrs":828,"content":829},{"level":21},[830],{"text":94,"type":26},{"type":28,"content":832},[833],{"text":834,"type":26},"ApartEasy propose une interface simple permettant de centraliser toutes les annonces immobilières dans un seul espace collaboratif.",{"type":28,"content":836},[837],{"text":838,"type":26},"Les utilisateurs peuvent créer une recherche, inviter d'autres personnes à y participer et ajouter manuellement les annonces trouvées sur différents sites en collant simplement l'URL et les informations principales.",{"type":28,"content":840},[841],{"text":842,"type":26},"Chaque annonce peut ensuite être enrichie avec différentes informations comme le prix, les charges, la surface, le nombre de pièces ou la date de disponibilité.",{"type":28,"content":844},[845],{"text":846,"type":26},"Une carte interactive permet de visualiser l'emplacement du logement et d'estimer les temps de trajet vers le lieu de référence de la recherche grâce à l'API Google Maps.",{"type":19,"attrs":848,"content":849},{"level":21},[850],{"text":132,"type":26},{"type":54,"content":852},[853,859,865,871,877,883,889,895],{"type":57,"content":854},[855],{"type":28,"content":856},[857],{"text":858,"type":26},"centralisation des annonces immobilières via URL",{"type":57,"content":860},[861],{"type":28,"content":862},[863],{"text":864,"type":26},"création d'espaces de recherche collaboratifs",{"type":57,"content":866},[867],{"type":28,"content":868},[869],{"text":870,"type":26},"invitation d'utilisateurs pour travailler en groupe",{"type":57,"content":872},[873],{"type":28,"content":874},[875],{"text":876,"type":26},"notation des logements sur 5 étoiles par chaque utilisateur",{"type":57,"content":878},[879],{"type":28,"content":880},[881],{"text":882,"type":26},"calcul d'une note moyenne pour comparer les biens",{"type":57,"content":884},[885],{"type":28,"content":886},[887],{"text":888,"type":26},"gestion du statut des annonces (appelé, visité, disponible)",{"type":57,"content":890},[891],{"type":28,"content":892},[893],{"text":894,"type":26},"carte interactive avec estimation des temps de trajet",{"type":57,"content":896},[897],{"type":28,"content":898},[899],{"text":900,"type":26},"filtres et tri des annonces (prix, ville, nom).",{"type":28,"content":902},[903],{"text":904,"type":26},"L'objectif est de faciliter la prise de décision en permettant de comparer facilement les logements et de suivre l'avancement de la recherche.",{"type":19,"attrs":906,"content":907},{"level":21},[908],{"text":202,"type":26},{"type":28,"content":910},[911],{"text":912,"type":26},"ApartEasy a été développé pour répondre à un besoin réel lors d'une recherche d'appartement en colocation. L'application permet de centraliser toutes les annonces, de suivre leur statut et de collaborer efficacement avec d'autres utilisateurs dans la recherche d'un logement.",{"type":28,"content":914},[915],{"text":916,"type":26},"L'outil démontre comment une application web collaborative peut simplifier l'organisation et la prise de décision lors d'une recherche immobilière.","https://aparteasy.dibodev.fr/tutorial",[919,221,222,223,920,921],"AdonisJS","Docker","MariaDB","https://github.com/Leoglme/aparteasy","https://a.storyblok.com/f/290162729601023/973ab5c47f/aparteasy-properties.png","https://a.storyblok.com/f/290162729601023/25941152b0/aparteasy-invite-users.png","/project/aparteasy",[927,928,929,930,931,932,933,934],"recherche d’appartement","annonces immobilières","collaboration","colocation","carte interactive","notation d’annonces","gestion de favoris","immobilier France","Application web collaborative permettant de centraliser et organiser des annonces immobilières. Comparez les logements, partagez vos favoris et estimez les temps de trajet avec une carte interactive.",{"name":937,"primaryColor":938,"secondaryColor":245,"logoUrl":939,"categories":940,"sectors":943,"date":945,"shortDescription":946,"longDescription":947,"siteUrl":438,"stack":1099,"repoUrl":1102,"media1":1103,"media2":1104,"route":1105,"tags":1106,"metaTitle":937,"metaDescription":1114,"isFavorite":1115},"Client Reddit multiplateforme — Tauri, Rust et Vue","#f13d1f","https://a.storyblok.com/f/290162729601023/22b532ab8e/redditech-logo.png",[941,942],"application-mobile","logiciel",[944],"reseaux-sociaux","2023-02-13","Prototype de client Reddit multiplateforme développé avec Tauri, Rust et Vue.js. L'application reproduit l'expérience Reddit officielle et fonctionne sur desktop et mobile avec une seule base de code.",{"type":16,"content":948},[949,953,957,961,965,969,973,977,981,991,995,999,1009,1013,1063,1067,1071,1075,1095],{"type":19,"attrs":950,"content":951},{"level":21},[952],{"text":25,"type":26},{"type":28,"content":954},[955],{"text":956,"type":26},"Reddit est une plateforme communautaire très populaire permettant de consulter, partager et commenter du contenu dans des milliers de communautés appelées subreddits. L'objectif de ce projet était de développer un client Reddit complet capable de reproduire l'expérience de l'application officielle tout en explorant les architectures modernes d'applications multiplateformes.",{"type":28,"content":958},[959],{"text":960,"type":26},"Ce projet a été réalisé dans le cadre du cursus ingénieur informatique à Epitech. Il consiste à créer un client Reddit fonctionnel reposant sur l'API officielle de Reddit et capable de fonctionner sur plusieurs plateformes avec une seule base de code.",{"type":19,"attrs":962,"content":963},{"level":21},[964],{"text":277,"type":26},{"type":28,"content":966},[967],{"text":968,"type":26},"Développer des applications pour plusieurs plateformes (desktop, mobile, web) nécessite souvent des bases de code distinctes, ce qui augmente la complexité du développement et de la maintenance.",{"type":28,"content":970},[971],{"text":972,"type":26},"Les frameworks traditionnels comme Electron permettent de créer des applications desktop avec des technologies web, mais produisent souvent des exécutables lourds et peu optimisés.",{"type":28,"content":974},[975],{"text":976,"type":26},"Le défi de ce projet consistait donc à concevoir un client Reddit performant, capable de fonctionner sur plusieurs plateformes tout en restant léger et sécurisé.",{"type":19,"attrs":978,"content":979},{"level":21},[980],{"text":94,"type":26},{"type":28,"content":982},[983,985,989],{"text":984,"type":26},"L'application utilise ",{"text":986,"type":26,"marks":987},"Tauri",[988],{"type":104},{"text":990,"type":26}," pour créer un exécutable desktop léger basé sur Rust, tout en conservant une interface utilisateur développée avec Vue.js.",{"type":28,"content":992},[993],{"text":994,"type":26},"Tauri permet de construire des applications multiplateformes performantes avec des exécutables beaucoup plus légers que ceux générés par des solutions comme Electron.",{"type":28,"content":996},[997],{"text":998,"type":26},"L'interface utilisateur reproduit fidèlement l'expérience de navigation Reddit et s'appuie sur les API officielles de Reddit (REST et GraphQL) pour récupérer les données et interagir avec la plateforme.",{"type":28,"content":1000},[1001,1003,1007],{"text":1002,"type":26},"Pour étendre l'application au mobile, le projet utilise également ",{"text":1004,"type":26,"marks":1005},"Capacitor",[1006],{"type":104},{"text":1008,"type":26},", permettant de réutiliser la même base de code.",{"type":19,"attrs":1010,"content":1011},{"level":21},[1012],{"text":132,"type":26},{"type":54,"content":1014},[1015,1021,1027,1033,1039,1045,1051,1057],{"type":57,"content":1016},[1017],{"type":28,"content":1018},[1019],{"text":1020,"type":26},"authentification via OAuth Reddit",{"type":57,"content":1022},[1023],{"type":28,"content":1024},[1025],{"text":1026,"type":26},"navigation dans le feed et les subreddits",{"type":57,"content":1028},[1029],{"type":28,"content":1030},[1031],{"text":1032,"type":26},"consultation des commentaires",{"type":57,"content":1034},[1035],{"type":28,"content":1036},[1037],{"text":1038,"type":26},"création de posts",{"type":57,"content":1040},[1041],{"type":28,"content":1042},[1043],{"text":1044,"type":26},"vote (upvote / downvote)",{"type":57,"content":1046},[1047],{"type":28,"content":1048},[1049],{"text":1050,"type":26},"recherche de contenus et de communautés",{"type":57,"content":1052},[1053],{"type":28,"content":1054},[1055],{"text":1056,"type":26},"gestion du profil utilisateur",{"type":57,"content":1058},[1059],{"type":28,"content":1060},[1061],{"text":1062,"type":26},"interface identique à l'expérience Reddit officielle.",{"type":28,"content":1064},[1065],{"text":1066,"type":26},"L'application fonctionne sur desktop (Windows, macOS) et peut également être adaptée pour le mobile grâce à l'architecture hybride.",{"type":19,"attrs":1068,"content":1069},{"level":21},[1070],{"text":202,"type":26},{"type":28,"content":1072},[1073],{"text":1074,"type":26},"Ce projet démontre la possibilité de développer une application multiplateforme complète à partir d'une seule base de code en combinant :",{"type":54,"content":1076},[1077,1083,1089],{"type":57,"content":1078},[1079],{"type":28,"content":1080},[1081],{"text":1082,"type":26},"Rust et Tauri pour les applications desktop performantes",{"type":57,"content":1084},[1085],{"type":28,"content":1086},[1087],{"text":1088,"type":26},"Vue.js pour l'interface utilisateur",{"type":57,"content":1090},[1091],{"type":28,"content":1092},[1093],{"text":1094,"type":26},"Capacitor pour l'extension vers le mobile.",{"type":28,"content":1096},[1097],{"text":1098,"type":26},"Il constitue un terrain d'expérimentation intéressant pour l'authentification OAuth, l'intégration d'API externes et l'architecture d'applications hybrides modernes.",[986,1100,221,1101,1004,436],"Rust","SCSS","https://github.com/Leoglme/tauri-reddit-mobile-app","https://a.storyblok.com/f/290162729601023/f2694aa39b/reddit-clone-gif.gif","https://a.storyblok.com/f/290162729601023/043f5f6c5d/reddit-home.png","/project/reddit-tauri-app",[1107,1108,1109,1110,1111,1112,1113],"application Reddit","client non officiel","multi-plateforme","desktop et mobile","authentification OAuth","expérience utilisateur","navigation de contenu","Prototype de client Reddit multiplateforme développé avec Tauri, Rust et Vue.js. Authentification OAuth, navigation dans les subreddits, commentaires et création de posts avec une seule base de code.",false,{"name":1117,"primaryColor":1118,"secondaryColor":1119,"logoUrl":1120,"categories":1121,"sectors":1122,"date":1123,"shortDescription":1124,"longDescription":1125,"siteUrl":1430,"stack":1431,"repoUrl":1432,"media1":1433,"media2":1434,"route":1435,"tags":1436,"metaTitle":1117,"metaDescription":1446,"isFavorite":1115},"Epitalk — Application de chat IRC temps réel avec Mercure et SSE","#8372f3","#101623","https://a.storyblok.com/f/290162729601023/200x200/9bc55e9dd2/122271528.png",[10],[944],"2023-02-01 00:00","Application de chat temps réel inspirée du protocole IRC, permettant de discuter dans des salons publics ou privés directement depuis le navigateur, avec mise à jour instantanée via Mercure et Server-Sent Events.",{"type":16,"content":1126},[1127,1131,1136,1141,1162,1167,1171,1176,1206,1211,1228,1232,1237,1242,1259,1264,1268,1383,1387,1397,1402,1425],{"type":19,"attrs":1128,"content":1129},{"level":21,"textAlign":22},[1130],{"text":25,"type":26},{"type":28,"attrs":1132,"content":1133},{"textAlign":22},[1134],{"text":1135,"type":26},"Epitalk est une application de chat inspirée du fonctionnement des serveurs IRC classiques, permettant aux utilisateurs de discuter en temps réel dans des salons publics ou via des messages privés.",{"type":28,"attrs":1137,"content":1138},{"textAlign":22},[1139],{"text":1140,"type":26},"Le projet a été réalisé dans le cadre d'un projet académique à Epitech, avec pour objectif de concevoir une application de messagerie temps réel complète accessible directement depuis un navigateur.",{"type":28,"attrs":1142,"content":1143},{"textAlign":22},[1144,1146,1156,1160],{"text":1145,"type":26},"Plutôt que d'utiliser WebSockets comme dans la plupart des applications de chat modernes, l'application utilise ",{"text":1147,"type":26,"marks":1148},"Mercure",[1149,1155],{"type":1150,"attrs":1151},"link",{"href":1152,"uuid":22,"anchor":22,"target":1153,"linktype":1154},"https://mercure.rocks/","_self","url",{"type":104},{"text":1157,"type":26,"marks":1158}," et Server-Sent Events (SSE)",[1159],{"type":104},{"text":1161,"type":26}," afin d'explorer une autre approche pour gérer les communications temps réel entre le serveur et les clients.",{"type":28,"attrs":1163,"content":1164},{"textAlign":22},[1165],{"text":1166,"type":26},"L'application est entièrement fonctionnelle et accessible publiquement : les utilisateurs peuvent simplement choisir un pseudo et rejoindre immédiatement le chat.",{"type":19,"attrs":1168,"content":1169},{"level":21,"textAlign":22},[1170],{"text":277,"type":26},{"type":28,"attrs":1172,"content":1173},{"textAlign":22},[1174],{"text":1175,"type":26},"Créer une application de messagerie temps réel implique plusieurs défis techniques :",{"type":54,"content":1177},[1178,1185,1192,1199],{"type":57,"content":1179},[1180],{"type":28,"attrs":1181,"content":1182},{"textAlign":22},[1183],{"text":1184,"type":26},"synchroniser les messages entre plusieurs utilisateurs et appareils",{"type":57,"content":1186},[1187],{"type":28,"attrs":1188,"content":1189},{"textAlign":22},[1190],{"text":1191,"type":26},"gérer la création et la gestion des salons de discussion",{"type":57,"content":1193},[1194],{"type":28,"attrs":1195,"content":1196},{"textAlign":22},[1197],{"text":1198,"type":26},"maintenir l'état des utilisateurs connectés",{"type":57,"content":1200},[1201],{"type":28,"attrs":1202,"content":1203},{"textAlign":22},[1204],{"text":1205,"type":26},"transmettre les événements sans recharger la page.",{"type":28,"attrs":1207,"content":1208},{"textAlign":22},[1209],{"text":1210,"type":26},"Les solutions classiques utilisent généralement WebSockets, mais d'autres architectures existent pour gérer les flux temps réel.",{"type":28,"attrs":1212,"content":1213},{"textAlign":22},[1214,1216,1222,1226],{"text":1215,"type":26},"L'objectif du projet était donc de concevoir une application de chat moderne tout en expérimentant une architecture basée sur ",{"text":1217,"type":26,"marks":1218},"Mercure ",[1219,1221],{"type":1150,"attrs":1220},{"href":1152,"uuid":22,"anchor":22,"target":1153,"linktype":1154},{"type":104},{"text":1223,"type":26,"marks":1224},"et Server-Sent Events",[1225],{"type":104},{"text":1227,"type":26},".",{"type":19,"attrs":1229,"content":1230},{"level":21,"textAlign":22},[1231],{"text":94,"type":26},{"type":28,"attrs":1233,"content":1234},{"textAlign":22},[1235],{"text":1236,"type":26},"Epitalk repose sur une architecture temps réel combinant un backend AdonisJS et le protocole Mercure pour diffuser les événements vers les clients.",{"type":28,"attrs":1238,"content":1239},{"textAlign":22},[1240],{"text":1241,"type":26},"Les clients se connectent à un flux SSE permettant de recevoir instantanément les mises à jour du serveur : nouveaux messages, arrivée d’utilisateurs, création de salons ou changements de statut.",{"type":28,"attrs":1243,"content":1244},{"textAlign":22},[1245,1247,1251,1253,1257],{"text":1246,"type":26},"L'interface frontend est développée avec ",{"text":1248,"type":26,"marks":1249},"Vue 3 et TypeScript",[1250],{"type":104},{"text":1252,"type":26},", avec une gestion d’état via ",{"text":1254,"type":26,"marks":1255},"Pinia",[1256],{"type":104},{"text":1258,"type":26},", permettant d'offrir une interface fluide proche des applications de chat modernes.",{"type":28,"attrs":1260,"content":1261},{"textAlign":22},[1262],{"text":1263,"type":26},"L'utilisateur peut simplement entrer un pseudonyme pour rejoindre le serveur et commencer à discuter immédiatement.",{"type":19,"attrs":1265,"content":1266},{"level":21,"textAlign":22},[1267],{"text":132,"type":26},{"type":54,"content":1269},[1270,1277,1284,1291,1298,1305,1355,1362,1369,1376],{"type":57,"content":1271},[1272],{"type":28,"attrs":1273,"content":1274},{"textAlign":22},[1275],{"text":1276,"type":26},"connexion instantanée au chat via pseudonyme",{"type":57,"content":1278},[1279],{"type":28,"attrs":1280,"content":1281},{"textAlign":22},[1282],{"text":1283,"type":26},"salons de discussion publics (channels)",{"type":57,"content":1285},[1286],{"type":28,"attrs":1287,"content":1288},{"textAlign":22},[1289],{"text":1290,"type":26},"messagerie privée entre utilisateurs",{"type":57,"content":1292},[1293],{"type":28,"attrs":1294,"content":1295},{"textAlign":22},[1296],{"text":1297,"type":26},"création et suppression de channels",{"type":57,"content":1299},[1300],{"type":28,"attrs":1301,"content":1302},{"textAlign":22},[1303],{"text":1304,"type":26},"liste des utilisateurs connectés dans un salon",{"type":57,"content":1306},[1307],{"type":28,"attrs":1308,"content":1309},{"textAlign":22},[1310,1312,1317,1319,1323,1324,1328,1329,1333,1334,1338,1339,1343,1344,1348,1349,1353],{"text":1311,"type":26},"commandes IRC classiques ",{"text":1313,"type":26,"marks":1314},"/join",[1315],{"type":1316},"code",{"text":1318,"type":26},", ",{"text":1320,"type":26,"marks":1321},"/list",[1322],{"type":1316},{"text":1318,"type":26},{"text":1325,"type":26,"marks":1326},"/users",[1327],{"type":1316},{"text":1318,"type":26},{"text":1330,"type":26,"marks":1331},"/nick",[1332],{"type":1316},{"text":1318,"type":26},{"text":1335,"type":26,"marks":1336},"/create",[1337],{"type":1316},{"text":1318,"type":26},{"text":1340,"type":26,"marks":1341},"/delete",[1342],{"type":1316},{"text":1318,"type":26},{"text":1345,"type":26,"marks":1346},"/msg",[1347],{"type":1316},{"text":1318,"type":26},{"text":1350,"type":26,"marks":1351},"/leave",[1352],{"type":1316},{"text":1354,"type":26},")",{"type":57,"content":1356},[1357],{"type":28,"attrs":1358,"content":1359},{"textAlign":22},[1360],{"text":1361,"type":26},"bot intégré pour répondre aux commandes",{"type":57,"content":1363},[1364],{"type":28,"attrs":1365,"content":1366},{"textAlign":22},[1367],{"text":1368,"type":26},"mise à jour temps réel des messages et des événements",{"type":57,"content":1370},[1371],{"type":28,"attrs":1372,"content":1373},{"textAlign":22},[1374],{"text":1375,"type":26},"détection des utilisateurs en ligne",{"type":57,"content":1377},[1378],{"type":28,"attrs":1379,"content":1380},{"textAlign":22},[1381],{"text":1382,"type":26},"interface responsive compatible mobile et desktop.",{"type":19,"attrs":1384,"content":1385},{"level":21,"textAlign":22},[1386],{"text":202,"type":26},{"type":28,"attrs":1388,"content":1389},{"textAlign":22},[1390,1392,1396],{"text":1391,"type":26},"Epitalk démontre la mise en œuvre d'une application de chat temps réel complète utilisant une architecture basée sur ",{"text":1393,"type":26,"marks":1394},"Mercure et Server-Sent Events",[1395],{"type":104},{"text":1227,"type":26},{"type":28,"attrs":1398,"content":1399},{"textAlign":22},[1400],{"text":1401,"type":26},"Le projet met en évidence :",{"type":54,"content":1403},[1404,1411,1418],{"type":57,"content":1405},[1406],{"type":28,"attrs":1407,"content":1408},{"textAlign":22},[1409],{"text":1410,"type":26},"la gestion d'événements temps réel côté client et serveur",{"type":57,"content":1412},[1413],{"type":28,"attrs":1414,"content":1415},{"textAlign":22},[1416],{"text":1417,"type":26},"la synchronisation instantanée des données entre plusieurs utilisateur",{"type":57,"content":1419},[1420],{"type":28,"attrs":1421,"content":1422},{"textAlign":22},[1423],{"text":1424,"type":26},"la conception d'une interface de chat moderne avec Vue.js.",{"type":28,"attrs":1426,"content":1427},{"textAlign":22},[1428],{"text":1429,"type":26},"Il constitue également une démonstration d’architecture alternative aux WebSockets pour les applications nécessitant des mises à jour temps réel.","https://epitalk.dibodev.fr/",[221,222,1254,1101,919,921,920],"https://github.com/epitalk","https://a.storyblok.com/f/290162729601023/1919x1079/17cffe2675/epitalk.png","https://a.storyblok.com/f/290162729601023/389x851/c6de8d1fa4/irc-mobile.png","/project/epitalk",[1437,1438,1439,1440,1441,236,1442,1443,1444,1445],"chat temps réel","irc","mercure","server sent events","messagerie web","adonisjs","sse","chat application","real-time messaging","Application de chat temps réel inspirée d’IRC développée avec Vue.js et AdonisJS. Messagerie instantanée, salons publics, messages privés et synchronisation en temps réel via Mercure et Server-Sent Events.",{"name":1448,"primaryColor":1449,"secondaryColor":1450,"logoUrl":1451,"categories":1452,"sectors":1453,"date":1455,"shortDescription":1456,"longDescription":1457,"siteUrl":438,"stack":1668,"repoUrl":1669,"media1":1670,"media2":1671,"route":1672,"tags":1673,"metaTitle":1448,"metaDescription":1681,"isFavorite":241},"EpiTrip — Planification de voyage en langage naturel avec IA","#2D6A4F","#131A20","https://a.storyblok.com/f/290162729601023/7c7fd5539c/epitrip-logo.png",[10,460],[1454],"voyage-transport","2023-01-10","Assistant de planification de voyage utilisant le traitement du langage naturel pour comprendre une demande en français, extraire les villes de départ et d'arrivée, puis calculer automatiquement l'itinéraire optimal à partir des données SNCF.",{"type":16,"content":1458},[1459,1463,1467,1471,1481,1485,1489,1493,1519,1523,1527,1531,1574,1578,1587,1591,1635,1639,1646,1650,1654,1664],{"type":19,"attrs":1460,"content":1461},{"level":21},[1462],{"text":25,"type":26},{"type":28,"content":1464},[1465],{"text":1466,"type":26},"Planifier un trajet en train nécessite généralement de naviguer sur plusieurs interfaces et de renseigner manuellement les villes de départ et d'arrivée. Pourtant, les utilisateurs formulent naturellement leurs demandes sous forme de phrases comme : « Je pars de Rennes pour aller à Biarritz ».",{"type":28,"content":1468},[1469],{"text":1470,"type":26},"EpiTrip est un assistant de planification de voyage capable d'interpréter ces phrases en langage naturel et de transformer automatiquement la demande en un itinéraire exploitable.",{"type":28,"content":1472},[1473,1475,1479],{"text":1474,"type":26},"Le projet combine des techniques de ",{"text":1476,"type":26,"marks":1477},"traitement du langage naturel (NLP)",[1478],{"type":104},{"text":1480,"type":26}," et d'optimisation d'itinéraires afin de comprendre la demande de l'utilisateur et de calculer le trajet optimal à partir des données de transport SNCF.",{"type":19,"attrs":1482,"content":1483},{"level":21},[1484],{"text":277,"type":26},{"type":28,"content":1486},[1487],{"text":1488,"type":26},"Les interfaces classiques de planification de trajet reposent sur des formulaires structurés où l'utilisateur doit sélectionner manuellement chaque information.",{"type":28,"content":1490},[1491],{"text":1492,"type":26},"Cette approche ne correspond pas toujours à la manière naturelle dont les utilisateurs expriment leurs besoins. De plus, la compréhension d'une phrase libre implique plusieurs défis techniques :",{"type":54,"content":1494},[1495,1501,1507,1513],{"type":57,"content":1496},[1497],{"type":28,"content":1498},[1499],{"text":1500,"type":26},"détecter si la phrase correspond réellement à une demande de voyage",{"type":57,"content":1502},[1503],{"type":28,"content":1504},[1505],{"text":1506,"type":26},"identifier les villes de départ et d'arrivée",{"type":57,"content":1508},[1509],{"type":28,"content":1510},[1511],{"text":1512,"type":26},"interpréter correctement les variations linguistiques",{"type":57,"content":1514},[1515],{"type":28,"content":1516},[1517],{"text":1518,"type":26},"calculer ensuite un itinéraire optimal à partir des données du réseau ferroviaire.",{"type":19,"attrs":1520,"content":1521},{"level":21},[1522],{"text":94,"type":26},{"type":28,"content":1524},[1525],{"text":1526,"type":26},"EpiTrip met en place un pipeline complet combinant intelligence artificielle et algorithmes de graphe pour traiter les demandes de voyage.",{"type":28,"content":1528},[1529],{"text":1530,"type":26},"Le système fonctionne en plusieurs étapes :",{"type":1532,"content":1533},"ordered_list",[1534,1544,1554,1564],{"type":57,"content":1535},[1536],{"type":28,"content":1537},[1538,1542],{"text":1539,"type":26,"marks":1540},"Détection de la langue",[1541],{"type":104},{"text":1543,"type":26}," pour vérifier que la phrase est en français grâce à FastText.",{"type":57,"content":1545},[1546],{"type":28,"content":1547},[1548,1552],{"text":1549,"type":26,"marks":1550},"Classification d'intention",[1551],{"type":104},{"text":1553,"type":26}," à l'aide d'un modèle DistilBERT fine-tuné pour identifier les demandes de trajet.",{"type":57,"content":1555},[1556],{"type":28,"content":1557},[1558,1562],{"text":1559,"type":26,"marks":1560},"Extraction des villes",[1561],{"type":104},{"text":1563,"type":26}," via un modèle de reconnaissance d'entités nommées basé sur CamemBERT.",{"type":57,"content":1565},[1566],{"type":28,"content":1567},[1568,1572],{"text":1569,"type":26,"marks":1570},"Calcul d'itinéraire optimal",[1571],{"type":104},{"text":1573,"type":26}," grâce à l'algorithme de Dijkstra appliqué aux données SNCF (GTFS).",{"type":28,"content":1575},[1576],{"text":1577,"type":26},"Les données ferroviaires incluent les gares, les trajets et les horaires, ce qui permet de calculer un itinéraire réaliste entre deux villes.",{"type":28,"content":1579},[1580,1582,1585],{"text":1581,"type":26},"Une interface web permet ensuite d'afficher le résultat sur une ",{"text":931,"type":26,"marks":1583},[1584],{"type":104},{"text":1586,"type":26},", avec les étapes du trajet et un résumé du parcours.",{"type":19,"attrs":1588,"content":1589},{"level":21},[1590],{"text":132,"type":26},{"type":54,"content":1592},[1593,1599,1605,1611,1617,1623,1629],{"type":57,"content":1594},[1595],{"type":28,"content":1596},[1597],{"text":1598,"type":26},"saisie d'une demande de trajet en langage naturel",{"type":57,"content":1600},[1601],{"type":28,"content":1602},[1603],{"text":1604,"type":26},"extraction automatique des villes de départ et d'arrivée",{"type":57,"content":1606},[1607],{"type":28,"content":1608},[1609],{"text":1610,"type":26},"classification d'intention basée sur un modèle NLP",{"type":57,"content":1612},[1613],{"type":28,"content":1614},[1615],{"text":1616,"type":26},"calcul d'itinéraire optimal avec l'algorithme de Dijkstra",{"type":57,"content":1618},[1619],{"type":28,"content":1620},[1621],{"text":1622,"type":26},"utilisation des données de transport SNCF",{"type":57,"content":1624},[1625],{"type":28,"content":1626},[1627],{"text":1628,"type":26},"affichage des trajets sur une carte interactive",{"type":57,"content":1630},[1631],{"type":28,"content":1632},[1633],{"text":1634,"type":26},"reconnaissance vocale permettant de dicter une demande de trajet.",{"type":28,"content":1636},[1637],{"text":1638,"type":26},"L'utilisateur peut par exemple dire ou écrire :",{"type":1640,"content":1641},"blockquote",[1642],{"type":28,"content":1643},[1644],{"text":1645,"type":26},"« Je veux aller de Rennes à Biarritz »",{"type":28,"content":1647},[1648],{"text":1649,"type":26},"et l'application identifie automatiquement les villes, calcule le meilleur itinéraire et affiche le résultat sur la carte.",{"type":19,"attrs":1651,"content":1652},{"level":21},[1653],{"text":202,"type":26},{"type":28,"content":1655},[1656,1658,1662],{"text":1657,"type":26},"EpiTrip démontre comment un pipeline combinant ",{"text":1659,"type":26,"marks":1660},"NLP, extraction d'entités et optimisation d'itinéraires",[1661],{"type":104},{"text":1663,"type":26}," peut transformer une demande exprimée en langage naturel en un trajet exploitable.",{"type":28,"content":1665},[1666],{"text":1667,"type":26},"Le projet met en évidence l'utilisation concrète des modèles transformers dans un contexte applicatif et montre comment les techniques d'intelligence artificielle peuvent simplifier l'interaction entre les utilisateurs et les systèmes de transport.",[220,221,222,223,919,738,739],"https://github.com/Leoglme/nlp_travel_order_resolver","https://a.storyblok.com/f/290162729601023/1920x1080/970c853fd2/home-work.gif","https://a.storyblok.com/f/290162729601023/1919x1079/c2f84b51e2/map.png","/project/epitrip",[1674,1675,1676,1677,931,1678,1679,1680],"planificateur de voyage","itinéraires SNCF","langage naturel","reconnaissance vocale","roadtrip","recherche d’itinéraire","tourisme France","Assistant de planification de voyage utilisant le NLP pour comprendre une demande en langage naturel, extraire les villes et calculer l'itinéraire optimal à partir des données SNCF avec affichage sur carte interactive.",{"name":1683,"primaryColor":1684,"secondaryColor":245,"logoUrl":1685,"categories":1686,"sectors":1687,"date":1689,"shortDescription":1690,"longDescription":1691,"siteUrl":1899,"stack":1900,"repoUrl":1901,"media1":1902,"media2":1903,"route":1904,"tags":1905,"metaTitle":1913,"metaDescription":1914,"isFavorite":1115},"Primea RP — Site officiel du serveur GTA 5 RolePlay","#a80400","https://a.storyblok.com/f/290162729601023/583b98dc37/primea-logo.png",[10],[1688],"gaming","2022-04-24","Site officiel du serveur GTA 5 RolePlay Primea RP, conçu pour présenter le projet, guider les nouveaux joueurs et faciliter l'accès à la communauté.",{"type":16,"content":1692},[1693,1697,1707,1711,1720,1724,1728,1732,1758,1762,1766,1776,1780,1784,1822,1826,1830,1868,1872,1876,1891,1895],{"type":19,"attrs":1694,"content":1695},{"level":21},[1696],{"text":25,"type":26},{"type":28,"content":1698},[1699,1701,1705],{"text":1700,"type":26},"Primea RP est un serveur ",{"text":1702,"type":26,"marks":1703},"GTA 5 RolePlay basé sur FiveM",[1704],{"type":104},{"text":1706,"type":26},", réunissant une communauté de joueurs francophones autour d'une expérience immersive de jeu de rôle.",{"type":28,"content":1708},[1709],{"text":1710,"type":26},"Pour accueillir de nouveaux joueurs et structurer la communauté, le serveur avait besoin d'un site web centralisant toutes les informations essentielles : présentation du serveur, règlement, guides et procédures pour rejoindre la communauté.",{"type":28,"content":1712},[1713,1715,1719],{"text":1714,"type":26},"L'objectif du site était de créer une porte d'entrée claire et accessible pour les nouveaux joueurs, tout en renforçant la visibilité du serveur sur des plateformes de référencement comme ",{"text":1716,"type":26,"marks":1717},"Top-Serveurs",[1718],{"type":104},{"text":1227,"type":26},{"type":19,"attrs":1721,"content":1722},{"level":21},[1723],{"text":277,"type":26},{"type":28,"content":1725},[1726],{"text":1727,"type":26},"Les serveurs GTA RP attirent régulièrement de nouveaux joueurs, mais l'absence d'informations structurées peut rendre l'intégration difficile.",{"type":28,"content":1729},[1730],{"text":1731,"type":26},"Les nouveaux membres doivent souvent chercher :",{"type":54,"content":1733},[1734,1740,1746,1752],{"type":57,"content":1735},[1736],{"type":28,"content":1737},[1738],{"text":1739,"type":26},"les règles du serveur",{"type":57,"content":1741},[1742],{"type":28,"content":1743},[1744],{"text":1745,"type":26},"les procédures pour rejoindre la communauté",{"type":57,"content":1747},[1748],{"type":28,"content":1749},[1750],{"text":1751,"type":26},"les touches et commandes spécifiques",{"type":57,"content":1753},[1754],{"type":28,"content":1755},[1756],{"text":1757,"type":26},"les ressources utiles pour bien commencer.",{"type":28,"content":1759},[1760],{"text":1761,"type":26},"Sans un point central d'information, ces éléments sont dispersés entre Discord, forums ou messages, ce qui peut créer de la confusion pour les nouveaux joueurs.",{"type":19,"attrs":1763,"content":1764},{"level":21},[1765],{"text":94,"type":26},{"type":28,"content":1767},[1768,1770,1774],{"text":1769,"type":26},"Le site Primea RP a été conçu comme ",{"text":1771,"type":26,"marks":1772},"plateforme d'onboarding pour le serveur",[1773],{"type":104},{"text":1775,"type":26},", permettant aux joueurs de découvrir rapidement l'univers du serveur et de comprendre comment y participer.",{"type":28,"content":1777},[1778],{"text":1779,"type":26},"Le site centralise toutes les informations nécessaires pour rejoindre la communauté et commencer à jouer dans de bonnes conditions.",{"type":28,"content":1781},[1782],{"text":1783,"type":26},"Il comprend notamment :",{"type":54,"content":1785},[1786,1792,1798,1804,1810,1816],{"type":57,"content":1787},[1788],{"type":28,"content":1789},[1790],{"text":1791,"type":26},"une présentation du serveur et de son univers",{"type":57,"content":1793},[1794],{"type":28,"content":1795},[1796],{"text":1797,"type":26},"les règles de roleplay",{"type":57,"content":1799},[1800],{"type":28,"content":1801},[1802],{"text":1803,"type":26},"les procédures pour rejoindre le serveur",{"type":57,"content":1805},[1806],{"type":28,"content":1807},[1808],{"text":1809,"type":26},"les touches et commandes du jeu",{"type":57,"content":1811},[1812],{"type":28,"content":1813},[1814],{"text":1815,"type":26},"les ressources utiles pour les nouveaux joueurs",{"type":57,"content":1817},[1818],{"type":28,"content":1819},[1820],{"text":1821,"type":26},"les liens vers les plateformes communautaires comme Discord.",{"type":28,"content":1823},[1824],{"text":1825,"type":26},"L'architecture du site a été pensée pour offrir une navigation simple et intuitive, facilitant l'accès aux informations importantes pour les nouveaux membres.",{"type":19,"attrs":1827,"content":1828},{"level":21},[1829],{"text":132,"type":26},{"type":54,"content":1831},[1832,1838,1844,1850,1856,1862],{"type":57,"content":1833},[1834],{"type":28,"content":1835},[1836],{"text":1837,"type":26},"présentation du serveur et de son univers",{"type":57,"content":1839},[1840],{"type":28,"content":1841},[1842],{"text":1843,"type":26},"règlement complet du serveur RP",{"type":57,"content":1845},[1846],{"type":28,"content":1847},[1848],{"text":1849,"type":26},"guides et ressources pour les joueurs",{"type":57,"content":1851},[1852],{"type":28,"content":1853},[1854],{"text":1855,"type":26},"explication des commandes et touches spécifiques",{"type":57,"content":1857},[1858],{"type":28,"content":1859},[1860],{"text":1861,"type":26},"procédure pour rejoindre le serveur",{"type":57,"content":1863},[1864],{"type":28,"content":1865},[1866],{"text":1867,"type":26},"accès direct au Discord de la communauté.",{"type":28,"content":1869},[1870],{"text":1871,"type":26},"Le site sert également de support de communication pour la communauté et permet de centraliser les informations importantes du serveur.",{"type":19,"attrs":1873,"content":1874},{"level":21},[1875],{"text":202,"type":26},{"type":28,"content":1877},[1878,1880,1884,1886,1890],{"text":1879,"type":26},"Le serveur Primea RP a accueilli une communauté active avec environ ",{"text":1881,"type":26,"marks":1882},"200 joueurs",[1883],{"type":104},{"text":1885,"type":26}," et jusqu'à ",{"text":1887,"type":26,"marks":1888},"80 joueurs connectés simultanément",[1889],{"type":104},{"text":1227,"type":26},{"type":28,"content":1892},[1893],{"text":1894,"type":26},"Le site a permis de structurer l'accueil des nouveaux joueurs, d'expliquer les règles du serveur et de simplifier le processus d'intégration dans la communauté.",{"type":28,"content":1896},[1897],{"text":1898,"type":26},"Ce projet démontre l'importance d'un site web clair et performant pour accompagner le développement d'une communauté gaming.","https://gtarp.dibodev.fr/",[220,221,222,1101],"https://github.com/Leoglme/Primea-rp","https://a.storyblok.com/f/290162729601023/1919x1079/f2d75d1b31/gtarp-website-landing.png","https://a.storyblok.com/f/290162729601023/437x846/76ab072143/gtarp-mobile.png","/project/primea-rp",[1906,1907,1908,1909,1910,1911,1912,452],"GTA 5 RP","serveur roleplay","communauté","règlement","onboarding","jeu vidéo","ressources joueurs","Primea RP — Site officiel du serveur GTA RP FiveM Français","Site officiel du serveur FR GTA 5 RolePlay FiveM Primea RP : présentation du serveur, règlement, guides et accès à la communauté Discord pour rejoindre l'expérience roleplay.",{"name":1916,"primaryColor":1917,"secondaryColor":1918,"logoUrl":1919,"categories":1920,"sectors":1921,"date":1923,"shortDescription":1924,"longDescription":1925,"siteUrl":2107,"stack":2108,"repoUrl":438,"media1":2112,"media2":2113,"route":2114,"tags":2115,"metaTitle":2123,"metaDescription":2124,"isFavorite":1115},"Stockpme — Logiciel de gestion de stock et d'inventaire pour PME","#86b91e","#f9f9f9","https://a.storyblok.com/f/290162729601023/52280e2cf9/logo-stockpme.png",[10,248,249],[1922,252],"logistique","2022-03-01","Logiciel SaaS de gestion de stock conçu pour les PME : suivi des produits, gestion des mouvements d'inventaire et génération d'étiquettes QR pour améliorer la traçabilité.",{"type":16,"content":1926},[1927,1931,1941,1951,1960,1964,1968,1972,1976,2002,2006,2010,2020,2024,2034,2038,2042,2091,2095,2099,2103],{"type":19,"attrs":1928,"content":1929},{"level":21},[1930],{"text":25,"type":26},{"type":28,"content":1932},[1933,1935,1939],{"text":1934,"type":26},"Stockpme est un logiciel SaaS conçu pour aider les ",{"text":1936,"type":26,"marks":1937},"TPE et PME à gérer leurs stocks et leurs inventaires",[1938],{"type":104},{"text":1940,"type":26}," de manière simple et fiable.",{"type":28,"content":1942},[1943,1945,1949],{"text":1944,"type":26},"Le projet a été développé au sein de ",{"text":1946,"type":26,"marks":1947},"Kodeva",[1948],{"type":104},{"text":1950,"type":26},", en collaboration avec l'entreprise Breizhtic qui assurait la distribution du logiciel et du matériel associé auprès des entreprises clientes.",{"type":28,"content":1952},[1953,1955,1959],{"text":1954,"type":26},"L'objectif de la solution est de centraliser la gestion des produits, des mouvements de stock et des entrepôts dans une interface unique, tout en facilitant les opérations terrain grâce à un système d'étiquettes professionnelles avec ",{"text":1956,"type":26,"marks":1957},"QR codes",[1958],{"type":104},{"text":1227,"type":26},{"type":28,"content":1961},[1962],{"text":1963,"type":26},"Le logiciel est aujourd'hui utilisé par des entreprises pour gérer leur inventaire et suivre leurs produits.",{"type":19,"attrs":1965,"content":1966},{"level":21},[1967],{"text":277,"type":26},{"type":28,"content":1969},[1970],{"text":1971,"type":26},"De nombreuses PME gèrent encore leurs stocks avec des outils peu adaptés : tableurs, systèmes manuels ou logiciels trop complexes.",{"type":28,"content":1973},[1974],{"text":1975,"type":26},"Cette organisation peut entraîner :",{"type":54,"content":1977},[1978,1984,1990,1996],{"type":57,"content":1979},[1980],{"type":28,"content":1981},[1982],{"text":1983,"type":26},"des erreurs d'inventaire",{"type":57,"content":1985},[1986],{"type":28,"content":1987},[1988],{"text":1989,"type":26},"des difficultés à suivre les mouvements de stock",{"type":57,"content":1991},[1992],{"type":28,"content":1993},[1994],{"text":1995,"type":26},"des ruptures ou excédents de produits",{"type":57,"content":1997},[1998],{"type":28,"content":1999},[2000],{"text":2001,"type":26},"une traçabilité limitée des opérations logistiques.",{"type":28,"content":2003},[2004],{"text":2005,"type":26},"Les équipes ont besoin d'un outil simple permettant de gérer les produits et leurs mouvements tout en conservant une vision claire de l'inventaire.",{"type":19,"attrs":2007,"content":2008},{"level":21},[2009],{"text":94,"type":26},{"type":28,"content":2011},[2012,2014,2018],{"text":2013,"type":26},"Stockpme propose une ",{"text":2015,"type":26,"marks":2016},"application web de gestion de stock accessible depuis un navigateur",[2017],{"type":104},{"text":2019,"type":26},", permettant de centraliser toutes les opérations liées à l'inventaire.",{"type":28,"content":2021},[2022],{"text":2023,"type":26},"Les entreprises peuvent créer leurs fiches produits, suivre les mouvements de stock et gérer leurs entrepôts depuis une interface simple.",{"type":28,"content":2025},[2026,2028,2032],{"text":2027,"type":26},"Le logiciel inclut également un système de ",{"text":2029,"type":26,"marks":2030},"génération d'étiquettes professionnelles avec QR codes",[2031],{"type":104},{"text":2033,"type":26},", permettant d'identifier rapidement les produits et d'accéder aux informations associées.",{"type":28,"content":2035},[2036],{"text":2037,"type":26},"Le QR code facilite la traçabilité et permet d'identifier les produits lors des opérations de gestion de stock.",{"type":19,"attrs":2039,"content":2040},{"level":21},[2041],{"text":132,"type":26},{"type":54,"content":2043},[2044,2050,2056,2062,2068,2073,2079,2085],{"type":57,"content":2045},[2046],{"type":28,"content":2047},[2048],{"text":2049,"type":26},"création et gestion des fiches produits",{"type":57,"content":2051},[2052],{"type":28,"content":2053},[2054],{"text":2055,"type":26},"gestion des stocks et niveaux d'inventaire",{"type":57,"content":2057},[2058],{"type":28,"content":2059},[2060],{"text":2061,"type":26},"mouvements de stock (entrée, sortie, corrections, inventaires)",{"type":57,"content":2063},[2064],{"type":28,"content":2065},[2066],{"text":2067,"type":26},"transferts entre emplacements ou entrepôts",{"type":57,"content":2069},[2070],{"type":28,"content":2071},[2072],{"text":2029,"type":26},{"type":57,"content":2074},[2075],{"type":28,"content":2076},[2077],{"text":2078,"type":26},"suivi des produits et historique des mouvements",{"type":57,"content":2080},[2081],{"type":28,"content":2082},[2083],{"text":2084,"type":26},"statistiques et graphiques d'évolution des stocks",{"type":57,"content":2086},[2087],{"type":28,"content":2088},[2089],{"text":2090,"type":26},"gestion des interventions SAV.",{"type":28,"content":2092},[2093],{"text":2094,"type":26},"La plateforme est conçue pour simplifier les opérations logistiques quotidiennes et améliorer la fiabilité des inventaires.",{"type":19,"attrs":2096,"content":2097},{"level":21},[2098],{"text":202,"type":26},{"type":28,"content":2100},[2101],{"text":2102,"type":26},"Stockpme est utilisé par des entreprises pour gérer leurs produits et leurs inventaires.",{"type":28,"content":2104},[2105],{"text":2106,"type":26},"Le logiciel permet de centraliser les informations liées au stock, d'améliorer la traçabilité des produits et de simplifier les opérations de gestion pour les équipes.","https://www.stockpme.fr/",[220,221,222,2109,2110,2111],"C#",".NET","MongoDB","https://a.storyblok.com/f/290162729601023/1280x720/c12ae9eb92/ezgif-7000e57014744f85.gif","https://a.storyblok.com/f/290162729601023/1280x720/c95b778ddf/ezgif-7ae7bb7a27adf67b.gif","/project/stockpme",[2116,2117,2118,2119,2120,2121,2122,1922],"gestion de stock","inventaire","traçabilité","codes QR","entrepôts","mouvements de stock","PME","Stockpme — Logiciel de gestion de stock pour PME","Logiciel SaaS de gestion de stock pour PME : suivi des produits, mouvements d'inventaire, étiquettes QR et statistiques pour améliorer la traçabilité et la gestion logistique.",{"name":2126,"primaryColor":2127,"secondaryColor":1918,"logoUrl":2128,"categories":2129,"sectors":2130,"date":2132,"shortDescription":2133,"longDescription":2134,"siteUrl":2323,"stack":2324,"repoUrl":438,"media1":2326,"media2":2327,"route":2328,"tags":2329,"metaTitle":2126,"metaDescription":2338,"isFavorite":1115},"Gest-Time — Logiciel de gestion du temps de travail pour entreprises","#3b51d5","https://a.storyblok.com/f/290162729601023/fa1f59bbe3/logo-management-times.png",[10,248,249],[2131,252],"productivite","2022-01-15","Logiciel SaaS permettant aux entreprises de suivre le temps de travail des salariés, gérer les feuilles de temps et centraliser la validation hebdomadaire.",{"type":16,"content":2135},[2136,2140,2149,2153,2157,2167,2171,2175,2179,2205,2209,2213,2223,2227,2237,2241,2245,2307,2311,2315,2319],{"type":19,"attrs":2137,"content":2138},{"level":21},[2139],{"text":25,"type":26},{"type":28,"content":2141},[2142,2144,2147],{"text":2143,"type":26},"Gest-Time est un logiciel SaaS de gestion du temps de travail développé au sein de ",{"text":1946,"type":26,"marks":2145},[2146],{"type":104},{"text":2148,"type":26},", en collaboration avec l'entreprise Breizhtic qui assurait la distribution de la solution auprès de TPE et PME.",{"type":28,"content":2150},[2151],{"text":2152,"type":26},"Le projet a été conçu pour remplacer les feuilles de temps papier et les fichiers Excel dispersés par une plateforme centralisée permettant de suivre les heures de travail des équipes.",{"type":28,"content":2154},[2155],{"text":2156,"type":26},"L'application est utilisée par des entreprises pour enregistrer les heures travaillées, suivre l'avancement des projets et simplifier la validation des feuilles de temps.",{"type":28,"content":2158},[2159,2161,2165],{"text":2160,"type":26},"Elle a été pensée pour être facilement utilisable sur ",{"text":2162,"type":26,"marks":2163},"tablettes et ordinateurs",[2164],{"type":104},{"text":2166,"type":26},", notamment par des équipes terrain peu familiarisées avec les outils informatiques.",{"type":19,"attrs":2168,"content":2169},{"level":21},[2170],{"text":277,"type":26},{"type":28,"content":2172},[2173],{"text":2174,"type":26},"De nombreuses entreprises gèrent encore le suivi des heures avec des systèmes peu adaptés : feuilles papier, tableurs ou outils non spécialisés.",{"type":28,"content":2176},[2177],{"text":2178,"type":26},"Ces méthodes rendent difficile :",{"type":54,"content":2180},[2181,2187,2193,2199],{"type":57,"content":2182},[2183],{"type":28,"content":2184},[2185],{"text":2186,"type":26},"la saisie fiable des heures de travail",{"type":57,"content":2188},[2189],{"type":28,"content":2190},[2191],{"text":2192,"type":26},"le suivi du temps passé sur les projets",{"type":57,"content":2194},[2195],{"type":28,"content":2196},[2197],{"text":2198,"type":26},"la validation des feuilles de temps",{"type":57,"content":2200},[2201],{"type":28,"content":2202},[2203],{"text":2204,"type":26},"l'analyse des données pour la gestion des équipes.",{"type":28,"content":2206},[2207],{"text":2208,"type":26},"Les managers ont besoin d'un outil simple permettant de centraliser les informations et de détecter rapidement les anomalies.",{"type":19,"attrs":2210,"content":2211},{"level":21},[2212],{"text":94,"type":26},{"type":28,"content":2214},[2215,2217,2221],{"text":2216,"type":26},"Gest-Time propose une application web permettant aux salariés de ",{"text":2218,"type":26,"marks":2219},"saisir leurs heures de travail par projet, tâche ou chantier",[2220],{"type":104},{"text":2222,"type":26},", directement depuis une interface claire et adaptée aux tablettes.",{"type":28,"content":2224},[2225],{"text":2226,"type":26},"Les employés enregistrent leurs heures au jour le jour, puis soumettent leur feuille de temps hebdomadaire pour validation.",{"type":28,"content":2228},[2229,2231,2235],{"text":2230,"type":26},"Les managers disposent d'une ",{"text":2232,"type":26,"marks":2233},"vue hebdomadaire centralisée",[2234],{"type":104},{"text":2236,"type":26}," leur permettant de valider, corriger ou refuser les feuilles de temps si nécessaire.",{"type":28,"content":2238},[2239],{"text":2240,"type":26},"Le système intègre également des alertes automatiques permettant d'identifier les anomalies, comme les heures manquantes ou les dépassements.",{"type":19,"attrs":2242,"content":2243},{"level":21},[2244],{"text":132,"type":26},{"type":54,"content":2246},[2247,2253,2259,2265,2271,2277,2283,2289,2295,2301],{"type":57,"content":2248},[2249],{"type":28,"content":2250},[2251],{"text":2252,"type":26},"saisie des heures par jour, projet, tâche ou chantier",{"type":57,"content":2254},[2255],{"type":28,"content":2256},[2257],{"text":2258,"type":26},"interface optimisée pour tablette et utilisation terrain",{"type":57,"content":2260},[2261],{"type":28,"content":2262},[2263],{"text":2264,"type":26},"gestion des absences (congés, RTT, etc.)",{"type":57,"content":2266},[2267],{"type":28,"content":2268},[2269],{"text":2270,"type":26},"workflow de validation hebdomadaire des feuilles de temps",{"type":57,"content":2272},[2273],{"type":28,"content":2274},[2275],{"text":2276,"type":26},"alertes sur les anomalies d'heures",{"type":57,"content":2278},[2279],{"type":28,"content":2280},[2281],{"text":2282,"type":26},"gestion des utilisateurs et des rôles",{"type":57,"content":2284},[2285],{"type":28,"content":2286},[2287],{"text":2288,"type":26},"gestion des projets, chantiers et tâches",{"type":57,"content":2290},[2291],{"type":28,"content":2292},[2293],{"text":2294,"type":26},"reporting détaillé par projet, tâche ou salarié",{"type":57,"content":2296},[2297],{"type":28,"content":2298},[2299],{"text":2300,"type":26},"export des données en Excel ou PDF",{"type":57,"content":2302},[2303],{"type":28,"content":2304},[2305],{"text":2306,"type":26},"statistiques et rapports pour le suivi des activités.",{"type":28,"content":2308},[2309],{"text":2310,"type":26},"Le logiciel permet également d'activer certaines fonctionnalités avancées selon les besoins de l'entreprise, comme la gestion des déplacements, des kilomètres professionnels ou des coûts horaires.",{"type":19,"attrs":2312,"content":2313},{"level":21},[2314],{"text":202,"type":26},{"type":28,"content":2316},[2317],{"text":2318,"type":26},"Gest-Time permet aux entreprises de centraliser le suivi du temps de travail, d'améliorer la fiabilité des feuilles de temps et de simplifier la validation des heures par les managers.",{"type":28,"content":2320},[2321],{"text":2322,"type":26},"Le logiciel apporte une meilleure visibilité sur l'activité des équipes et facilite l'analyse des données pour le suivi des projets.","https://www.kodeva.fr/nos-produits/saisie-des-temps",[220,221,222,2109,2110,2111,2325],"Microsoft SQL Server (MSSQL)","https://a.storyblok.com/f/290162729601023/3840x2160/9e36980b9f/mockup-day-view-phone.png","https://a.storyblok.com/f/290162729601023/3464x2233/bf1f0c5b0c/report-view.png","/project/gestion-temps",[2330,2331,2332,2333,2334,2335,2336,2337],"suivi du temps","feuilles de temps","validation hebdomadaire","productivité","rapports RH","gestion de chantiers","timesheet","contrôle des heures","Logiciel SaaS de suivi du temps de travail : saisie d'heures par projet, validation hebdomadaire, alertes d'anomalies et reporting pour piloter l'activité des équipes.",{"name":2340,"primaryColor":2341,"secondaryColor":2342,"logoUrl":2343,"categories":2344,"sectors":2345,"date":2346,"shortDescription":2347,"longDescription":2348,"siteUrl":2531,"stack":2532,"repoUrl":2537,"media1":2538,"media2":2539,"route":2540,"tags":2541,"metaTitle":2547,"metaDescription":2548,"isFavorite":1115},"Nextodo — Application Kanban type Trello développée avec Next.js","#F5A623","#1F1F1F","https://a.storyblok.com/f/290162729601023/1097a7981a/nextodo-logo.png",[10],[2131],"2021-11-07","Application de gestion de tâches inspirée de Trello permettant d'organiser des tâches dans des colonnes Kanban avec glisser-déposer.",{"type":16,"content":2349},[2350,2354,2358,2368,2377,2381,2385,2389,2409,2413,2417,2421,2431,2447,2451,2495,2499,2503,2507,2511],{"type":19,"attrs":2351,"content":2352},{"level":21},[2353],{"text":25,"type":26},{"type":28,"content":2355},[2356],{"text":2357,"type":26},"Nextodo est une application web de gestion de tâches inspirée des interfaces Kanban comme Trello.",{"type":28,"content":2359},[2360,2362,2366],{"text":2361,"type":26},"Le projet a été réalisé dans le cadre d'un exercice technique visant à explorer les bonnes pratiques du développement front-end moderne avec ",{"text":2363,"type":26,"marks":2364},"React et Next.js",[2365],{"type":104},{"text":2367,"type":26},", ainsi que la mise en place de tests unitaires et end-to-end.",{"type":28,"content":2369},[2370,2372,2376],{"text":2371,"type":26},"L'objectif était de concevoir une interface fluide permettant d'organiser visuellement des tâches et de manipuler les éléments via ",{"text":2373,"type":26,"marks":2374},"glisser-déposer",[2375],{"type":104},{"text":1227,"type":26},{"type":19,"attrs":2378,"content":2379},{"level":21},[2380],{"text":277,"type":26},{"type":28,"content":2382},[2383],{"text":2384,"type":26},"La gestion des tâches devient rapidement difficile lorsque les projets ne sont pas organisés visuellement.",{"type":28,"content":2386},[2387],{"text":2388,"type":26},"Les outils de type Kanban permettent de structurer les tâches en colonnes et d'identifier rapidement :",{"type":54,"content":2390},[2391,2397,2403],{"type":57,"content":2392},[2393],{"type":28,"content":2394},[2395],{"text":2396,"type":26},"les tâches à faire",{"type":57,"content":2398},[2399],{"type":28,"content":2400},[2401],{"text":2402,"type":26},"les tâches en cours",{"type":57,"content":2404},[2405],{"type":28,"content":2406},[2407],{"text":2408,"type":26},"les tâches terminées.",{"type":28,"content":2410},[2411],{"text":2412,"type":26},"Le projet visait à reproduire cette logique tout en mettant en pratique les concepts modernes du développement front-end.",{"type":19,"attrs":2414,"content":2415},{"level":21},[2416],{"text":94,"type":26},{"type":28,"content":2418},[2419],{"text":2420,"type":26},"Nextodo propose une interface simple permettant de créer des colonnes et d'y organiser des tâches sous forme de cartes.",{"type":28,"content":2422},[2423,2425,2429],{"text":2424,"type":26},"Les utilisateurs peuvent réorganiser les éléments grâce à un système de ",{"text":2426,"type":26,"marks":2427},"drag-and-drop",[2428],{"type":104},{"text":2430,"type":26},", facilitant la priorisation et le suivi de l'avancement.",{"type":28,"content":2432},[2433,2435,2439,2441,2445],{"text":2434,"type":26},"L'application repose sur ",{"text":2436,"type":26,"marks":2437},"Next.js et React",[2438],{"type":104},{"text":2440,"type":26},", avec une gestion d'état via Redux et l'utilisation de la bibliothèque ",{"text":2442,"type":26,"marks":2443},"react-beautiful-dnd",[2444],{"type":104},{"text":2446,"type":26}," pour le déplacement fluide des cartes et des colonnes.",{"type":19,"attrs":2448,"content":2449},{"level":21},[2450],{"text":132,"type":26},{"type":54,"content":2452},[2453,2459,2465,2471,2477,2483,2489],{"type":57,"content":2454},[2455],{"type":28,"content":2456},[2457],{"text":2458,"type":26},"création et suppression de colonnes Kanban",{"type":57,"content":2460},[2461],{"type":28,"content":2462},[2463],{"text":2464,"type":26},"création, modification et suppression de tâches",{"type":57,"content":2466},[2467],{"type":28,"content":2468},[2469],{"text":2470,"type":26},"organisation des tâches par glisser-déposer",{"type":57,"content":2472},[2473],{"type":28,"content":2474},[2475],{"text":2476,"type":26},"déplacement des cartes entre colonnes",{"type":57,"content":2478},[2479],{"type":28,"content":2480},[2481],{"text":2482,"type":26},"gestion du statut des tâches (à faire / terminées)",{"type":57,"content":2484},[2485],{"type":28,"content":2486},[2487],{"text":2488,"type":26},"filtres d'affichage des tâches",{"type":57,"content":2490},[2491],{"type":28,"content":2492},[2493],{"text":2494,"type":26},"suppression rapide des tâches terminées.",{"type":28,"content":2496},[2497],{"text":2498,"type":26},"Chaque colonne dispose également de filtres permettant d'afficher uniquement certaines tâches selon leur statut.",{"type":19,"attrs":2500,"content":2501},{"level":21},[2502],{"text":202,"type":26},{"type":28,"content":2504},[2505],{"text":2506,"type":26},"Nextodo constitue une démonstration pratique de la création d'une interface Kanban moderne avec React.",{"type":28,"content":2508},[2509],{"text":2510,"type":26},"Le projet met en avant :",{"type":54,"content":2512},[2513,2519,2525],{"type":57,"content":2514},[2515],{"type":28,"content":2516},[2517],{"text":2518,"type":26},"la gestion d'état d'une application front-end",{"type":57,"content":2520},[2521],{"type":28,"content":2522},[2523],{"text":2524,"type":26},"la manipulation d'éléments dynamiques via drag-and-drop",{"type":57,"content":2526},[2527],{"type":28,"content":2528},[2529],{"text":2530,"type":26},"la conception d'interfaces interactives et modulaires.","https://nextodo.vercel.app/",[2533,2534,2535,2536],"Next.js","React","JavaScript","CSS","https://github.com/Leoglme/nextodo","https://a.storyblok.com/f/290162729601023/1280x635/b2d2c95fbf/ezgif-72de7f24ce6e99a4.gif","https://a.storyblok.com/f/290162729601023/1897x949/4684bdf8b5/capture-d-ecran-2026-01-30-014028.png","/project/nextodo",[2542,2543,2426,2544,2545,2546],"to-do list","kanban","organisation des tâches","productivité personnelle","gestion de projets","Nextodo — Application Kanban type Trello avec React et Next.js","Application Kanban inspirée de Trello : colonnes, cartes et glisser-déposer pour organiser ses tâches. Projet React développé avec Next.js et Redux.",{"name":2550,"primaryColor":2551,"secondaryColor":2552,"logoUrl":2553,"categories":2554,"sectors":2555,"date":2556,"shortDescription":2557,"longDescription":2558,"siteUrl":2768,"stack":2769,"repoUrl":2771,"media1":438,"media2":438,"route":2772,"tags":2773,"metaTitle":2780,"metaDescription":2781,"isFavorite":1115},"Driving School — Logiciel de gestion d'auto-école et planification des leçons","#4f46e5","#f1f5f9","https://a.storyblok.com/f/290162729601023/5f2df1615b/logo-driving-school.png",[10,248,249],[1454,252],"2021-09-01","Application web de gestion d'auto-école permettant de planifier les heures de conduite, gérer les élèves et moniteurs et suivre les heures de formation.",{"type":16,"content":2559},[2560,2564,2568,2577,2581,2585,2589,2615,2619,2639,2643,2647,2651,2655,2659,2663,2667,2671,2727,2731,2735,2744,2748],{"type":19,"attrs":2561,"content":2562},{"level":21},[2563],{"text":25,"type":26},{"type":28,"content":2565},[2566],{"text":2567,"type":26},"Driving School est une application web de gestion destinée aux auto-écoles, permettant d'organiser les leçons de conduite, gérer les élèves et centraliser la planification des rendez-vous.",{"type":28,"content":2569},[2570,2572,2576],{"text":2571,"type":26},"Le projet a été réalisé dans le cadre d'un projet académique visant à concevoir une ",{"text":2573,"type":26,"marks":2574},"application métier complète avec gestion des utilisateurs, planification et logique métier",[2575],{"type":104},{"text":1227,"type":26},{"type":28,"content":2578},[2579],{"text":2580,"type":26},"L'objectif était de créer un outil capable de remplacer l'organisation manuelle des plannings et d'apporter une vision claire des heures de conduite disponibles pour chaque élève.",{"type":19,"attrs":2582,"content":2583},{"level":21},[2584],{"text":277,"type":26},{"type":28,"content":2586},[2587],{"text":2588,"type":26},"Les auto-écoles doivent gérer quotidiennement :",{"type":54,"content":2590},[2591,2597,2603,2609],{"type":57,"content":2592},[2593],{"type":28,"content":2594},[2595],{"text":2596,"type":26},"les élèves inscrits",{"type":57,"content":2598},[2599],{"type":28,"content":2600},[2601],{"text":2602,"type":26},"les moniteurs disponibles",{"type":57,"content":2604},[2605],{"type":28,"content":2606},[2607],{"text":2608,"type":26},"les heures de conduite restantes",{"type":57,"content":2610},[2611],{"type":28,"content":2612},[2613],{"text":2614,"type":26},"la planification des rendez-vous.",{"type":28,"content":2616},[2617],{"text":2618,"type":26},"Lorsque ces informations sont gérées manuellement ou via plusieurs outils, cela peut entraîner :",{"type":54,"content":2620},[2621,2627,2633],{"type":57,"content":2622},[2623],{"type":28,"content":2624},[2625],{"text":2626,"type":26},"des erreurs de planification",{"type":57,"content":2628},[2629],{"type":28,"content":2630},[2631],{"text":2632,"type":26},"des conflits d'horaires",{"type":57,"content":2634},[2635],{"type":28,"content":2636},[2637],{"text":2638,"type":26},"un suivi difficile des heures de conduite restantes.",{"type":28,"content":2640},[2641],{"text":2642,"type":26},"Les équipes administratives ont besoin d'un système centralisé pour organiser efficacement les leçons et suivre l'évolution des élèves.",{"type":19,"attrs":2644,"content":2645},{"level":21},[2646],{"text":94,"type":26},{"type":28,"content":2648},[2649],{"text":2650,"type":26},"Driving School propose une application web permettant au personnel de l'auto-école de planifier et gérer les leçons de conduite depuis un calendrier central.",{"type":28,"content":2652},[2653],{"text":2654,"type":26},"Les créneaux sont créés par le personnel (administrateurs, secrétaires ou moniteurs) en associant un élève, un instructeur et une plage horaire.",{"type":28,"content":2656},[2657],{"text":2658,"type":26},"Le système vérifie automatiquement que l'élève possède encore suffisamment d'heures de conduite disponibles avant d'autoriser la création d'un créneau.",{"type":28,"content":2660},[2661],{"text":2662,"type":26},"Chaque rendez-vous met à jour automatiquement le compteur d'heures de conduite réalisées.",{"type":28,"content":2664},[2665],{"text":2666,"type":26},"L'application inclut également un système d'authentification avec différents rôles utilisateurs afin de limiter l'accès aux fonctionnalités selon le profil.",{"type":19,"attrs":2668,"content":2669},{"level":21},[2670],{"text":132,"type":26},{"type":54,"content":2672},[2673,2679,2685,2691,2697,2703,2709,2715,2721],{"type":57,"content":2674},[2675],{"type":28,"content":2676},[2677],{"text":2678,"type":26},"gestion des comptes utilisateurs avec rôles (admin, secrétaire, moniteur, élève)",{"type":57,"content":2680},[2681],{"type":28,"content":2682},[2683],{"text":2684,"type":26},"création et gestion des élèves et du personnel",{"type":57,"content":2686},[2687],{"type":28,"content":2688},[2689],{"text":2690,"type":26},"planification des leçons via un calendrier interactif",{"type":57,"content":2692},[2693],{"type":28,"content":2694},[2695],{"text":2696,"type":26},"association des rendez-vous avec élève et moniteur",{"type":57,"content":2698},[2699],{"type":28,"content":2700},[2701],{"text":2702,"type":26},"vérification automatique des heures de conduite restantes",{"type":57,"content":2704},[2705],{"type":28,"content":2706},[2707],{"text":2708,"type":26},"suivi des heures effectuées et restantes par élève",{"type":57,"content":2710},[2711],{"type":28,"content":2712},[2713],{"text":2714,"type":26},"modification et déplacement des créneaux par glisser-déposer",{"type":57,"content":2716},[2717],{"type":28,"content":2718},[2719],{"text":2720,"type":26},"gestion des comptes utilisateurs et profils",{"type":57,"content":2722},[2723],{"type":28,"content":2724},[2725],{"text":2726,"type":26},"emails automatiques (création de compte et réinitialisation de mot de passe).",{"type":28,"content":2728},[2729],{"text":2730,"type":26},"Les élèves disposent d'un accès leur permettant de consulter leur planning et leurs heures de conduite restantes.",{"type":19,"attrs":2732,"content":2733},{"level":21},[2734],{"text":202,"type":26},{"type":28,"content":2736},[2737,2739,2743],{"text":2738,"type":26},"Ce projet démontre la conception d'une ",{"text":2740,"type":26,"marks":2741},"application métier complète avec gestion d'utilisateurs, planification et logique métier spécifique à un secteur d'activité",[2742],{"type":104},{"text":1227,"type":26},{"type":28,"content":2745},[2746],{"text":2747,"type":26},"Il illustre la mise en place :",{"type":54,"content":2749},[2750,2756,2762],{"type":57,"content":2751},[2752],{"type":28,"content":2753},[2754],{"text":2755,"type":26},"d'un système d'authentification avec rôles",{"type":57,"content":2757},[2758],{"type":28,"content":2759},[2760],{"text":2761,"type":26},"d'une logique métier liée à la planification",{"type":57,"content":2763},[2764],{"type":28,"content":2765},[2766],{"text":2767,"type":26},"d'une interface de gestion claire pour les équipes administratives.","https://driving-school.dibodev.fr/",[221,222,223,738,2770],"Flask","https://github.com/Leoglme/driving-school","/project/driving-school",[2774,2775,2776,2777,2778,2779],"auto-école","gestion planning","rendez-vous","élèves et moniteurs","organisation","application métier","Driving School — Logiciel de gestion d'auto-école et planning des leçons","Application web de gestion d'auto-école : gestion des élèves et moniteurs, planification des leçons de conduite et suivi des heures restantes.",{"name":2783,"primaryColor":2784,"secondaryColor":2785,"logoUrl":2786,"categories":2787,"sectors":2788,"date":2789,"shortDescription":2790,"longDescription":2791,"siteUrl":2939,"stack":2940,"repoUrl":2942,"media1":2943,"media2":2944,"route":2945,"tags":2946,"metaTitle":2953,"metaDescription":2954,"isFavorite":1115},"Puissance 4 — Jeu Puissance 4 jouable en ligne sur desktop et mobile","#c30000","#141214","https://a.storyblok.com/f/290162729601023/8fad2388f2/puissance4-logo.png",[10],[1688],"2021-06-12","Version web du célèbre jeu Puissance 4 avec interface responsive, personnalisation des joueurs et logique de jeu complète en JavaScript.",{"type":16,"content":2792},[2793,2797,2801,2811,2815,2819,2823,2849,2853,2857,2861,2865,2869,2873,2877,2921,2925,2935],{"type":19,"attrs":2794,"content":2795},{"level":21},[2796],{"text":25,"type":26},{"type":28,"content":2798},[2799],{"text":2800,"type":26},"Puissance 4 est une adaptation web du célèbre jeu de plateau permettant à deux joueurs de s'affronter directement depuis un navigateur.",{"type":28,"content":2802},[2803,2805,2809],{"text":2804,"type":26},"Le projet a été réalisé dans le cadre d'un exercice académique visant à développer un jeu interactif en ",{"text":2806,"type":26,"marks":2807},"JavaScript pur",[2808],{"type":104},{"text":2810,"type":26},", avec une interface responsive et une logique de jeu complète côté client.",{"type":28,"content":2812},[2813],{"text":2814,"type":26},"L'objectif était de concevoir une application web simple, accessible et jouable sur différents appareils, tout en implémentant les mécanismes fondamentaux du jeu.",{"type":19,"attrs":2816,"content":2817},{"level":21},[2818],{"text":277,"type":26},{"type":28,"content":2820},[2821],{"text":2822,"type":26},"Reproduire un jeu de plateau classique dans une application web nécessite de gérer plusieurs éléments :",{"type":54,"content":2824},[2825,2831,2837,2843],{"type":57,"content":2826},[2827],{"type":28,"content":2828},[2829],{"text":2830,"type":26},"l'état du plateau de jeu",{"type":57,"content":2832},[2833],{"type":28,"content":2834},[2835],{"text":2836,"type":26},"les actions des joueurs",{"type":57,"content":2838},[2839],{"type":28,"content":2840},[2841],{"text":2842,"type":26},"la vérification des conditions de victoire",{"type":57,"content":2844},[2845],{"type":28,"content":2846},[2847],{"text":2848,"type":26},"l'interaction avec l'interface utilisateur.",{"type":28,"content":2850},[2851],{"text":2852,"type":26},"La difficulté consiste à implémenter une logique fiable permettant de détecter correctement les alignements gagnants tout en conservant une interface fluide et intuitive.",{"type":19,"attrs":2854,"content":2855},{"level":21},[2856],{"text":94,"type":26},{"type":28,"content":2858},[2859],{"text":2860,"type":26},"L'application repose sur une implémentation JavaScript de la logique du jeu, avec un algorithme permettant de vérifier les alignements horizontaux, verticaux et diagonaux après chaque coup.",{"type":28,"content":2862},[2863],{"text":2864,"type":26},"Les joueurs peuvent personnaliser leur avatar et la couleur de leurs pions avant de commencer la partie.",{"type":28,"content":2866},[2867],{"text":2868,"type":26},"Le plateau de jeu est entièrement interactif : un clic sur une colonne déclenche la chute animée du pion jusqu'à la position disponible.",{"type":28,"content":2870},[2871],{"text":2872,"type":26},"L'interface est responsive afin de permettre de jouer aussi bien sur ordinateur que sur mobile ou tablette.",{"type":19,"attrs":2874,"content":2875},{"level":21},[2876],{"text":132,"type":26},{"type":54,"content":2878},[2879,2885,2891,2897,2903,2909,2915],{"type":57,"content":2880},[2881],{"type":28,"content":2882},[2883],{"text":2884,"type":26},"jeu Puissance 4 jouable directement dans le navigateur",{"type":57,"content":2886},[2887],{"type":28,"content":2888},[2889],{"text":2890,"type":26},"mode deux joueurs sur le même appareil",{"type":57,"content":2892},[2893],{"type":28,"content":2894},[2895],{"text":2896,"type":26},"personnalisation des avatars et des couleurs de pions",{"type":57,"content":2898},[2899],{"type":28,"content":2900},[2901],{"text":2902,"type":26},"détection automatique des victoires (horizontal, vertical, diagonal)",{"type":57,"content":2904},[2905],{"type":28,"content":2906},[2907],{"text":2908,"type":26},"animation de chute des pions",{"type":57,"content":2910},[2911],{"type":28,"content":2912},[2913],{"text":2914,"type":26},"interface responsive compatible mobile et tablette",{"type":57,"content":2916},[2917],{"type":28,"content":2918},[2919],{"text":2920,"type":26},"enchaînement de manches entre les joueurs.",{"type":19,"attrs":2922,"content":2923},{"level":21},[2924],{"text":202,"type":26},{"type":28,"content":2926},[2927,2929,2933],{"text":2928,"type":26},"Ce projet démontre la mise en œuvre d'une ",{"text":2930,"type":26,"marks":2931},"logique de jeu complète en JavaScript",[2932],{"type":104},{"text":2934,"type":26},", ainsi que la création d'une interface interactive et responsive.",{"type":28,"content":2936},[2937],{"text":2938,"type":26},"Il met en avant la gestion d'état d'un jeu côté client, la manipulation du DOM et l'implémentation d'algorithmes simples pour détecter les conditions de victoire.","https://puissance4.dibodev.fr/",[2941,2536,2535],"HTML","https://github.com/Leoglme/puissance4","https://a.storyblok.com/f/290162729601023/1280x633/07ce6bd38f/ezgif-792a1f8b2f7d86f1.gif","https://a.storyblok.com/f/290162729601023/389x846/4ad92f4a70/capture-d-ecran-2026-01-30-020403.png","/project/puissance4",[2947,2948,2949,2950,2951,2952],"jeu web","puissance 4 en ligne","multijoueur local","responsive mobile","personnalisation","divertissement","Puissance 4 — Jeu Puissance 4 en ligne jouable sur mobile et desktop","Jeu Puissance 4 jouable directement dans le navigateur : interface responsive, animation des pions et logique de victoire complète en JavaScript.",1774654354065]