[{"data":1,"prerenderedAt":270},["ShallowReactive",2],{"$f1Fm1hcdeXyoZt5sRJYGDkeB-8_pyzhQFam4Bpv9_71Y":3},[4,27,47,87,110,130,161,197,213,231,248],{"id":5,"featured":6,"tags":7,"title":9,"imageName":10,"category":11,"description":14,"link":17,"skills":18},1,true,[8],"mobile","Yacht Club de Monaco","ycm",{"en":12,"fr":13},"Mobile app","Application mobile",{"en":15,"fr":16},"Mobile app for the Yacht Club de Monaco, built with Flutter, Swift and Kotlin and published on the App Store. I integrated STID access control for secure door opening, and contributed to both the backend and the frontend.","Application mobile du Yacht Club de Monaco, en Flutter, Swift et Kotlin, publiée sur l’App Store. J’ai intégré le contrôle d’accès STID pour l’ouverture sécurisée des portes, et contribué au backend comme au frontend.","https:\u002F\u002Fapps.apple.com\u002Ffr\u002Fapp\u002Fyacht-club-de-monaco-ycm\u002Fid6463238123",[19,21,23,25],{"translationKey":20},"skills.flutter",{"translationKey":22},"skills.swift",{"translationKey":24},"skills.kotlin",{"translationKey":26},"skills.stid",{"id":28,"tags":29,"title":31,"imageName":32,"category":33,"description":36,"link":39,"skills":40},2,[30,8],"web","AREA","area",{"en":34,"fr":35},"Web & mobile platform","Plateforme web & mobile",{"en":37,"fr":38},"An IFTTT \u002F Zapier-style automation platform: connect services together and trigger reactions from actions. Authentication, REST API integrations, web and mobile interfaces, Docker deployment.","Plateforme d’automatisation façon IFTTT \u002F Zapier : on connecte des services entre eux et une action déclenche une réaction. Authentification, intégrations d’API REST, interfaces web et mobile, déploiement Docker.","https:\u002F\u002Farea.lanteri-enee.dev\u002F",[41,43,45],{"translationKey":42},"skills.restApi",{"translationKey":44},"skills.docker",{"translationKey":46},"skills.authentication",{"id":48,"featured":6,"tags":49,"title":51,"imageName":52,"category":53,"description":56,"link":59,"screenshots":60,"skills":76},9,[30,50],"ai","CRM Next","crmnext",{"en":54,"fr":55},"Business CRM · web","CRM métier · web",{"en":57,"fr":58},"A custom CRM for two insurance brokerages, in production and used every day. Several agencies whose data stays strictly separated, with clients, contracts, claims, document management, email and SMS campaigns, commissions and built-in online quote tools. A Telegram assistant turns “Meeting with Mr Martin Thursday 2:30pm” into a calendar event. Over 1,300 automated tests.","CRM sur mesure pour deux cabinets de courtage en assurance, en production et utilisé au quotidien. Plusieurs agences dont les données restent étanches, avec clients, contrats, sinistres, GED, campagnes e-mail et SMS, commissions et deviseurs en ligne intégrés. Un assistant Telegram transforme « RDV avec M. Martin jeudi 14h30 » en rendez-vous dans l’agenda. Plus de 1 300 tests automatisés.","",[61,66,71],{"src":62,"alt":63},"crm-next-dashboard.webp",{"en":64,"fr":65},"CRM Next dashboard","Tableau de bord du CRM",{"src":67,"alt":68},"crm-next-clients.webp",{"en":69,"fr":70},"Clients and prospects","Clients et prospects",{"src":72,"alt":73,"mobile":6},"crm-next-mobile.webp",{"en":74,"fr":75},"A client record on a phone","Une fiche client sur téléphone",[77,79,81,83,85],{"translationKey":78},"skills.nextjs",{"translationKey":80},"skills.typescript",{"translationKey":82},"skills.prisma",{"translationKey":84},"skills.mysql",{"translationKey":86},"skills.ai",{"id":88,"featured":6,"tags":89,"title":90,"imageName":91,"category":92,"description":95,"link":98,"skills":99},4,[30,8,50],"CVLeon","cvleon",{"en":93,"fr":94},"AI SaaS · web & mobile","SaaS IA · web & mobile",{"en":96,"fr":97},"An AI platform that optimizes resumes and cover letters to get through ATS filters. Complete fullstack architecture: web app, mobile app and Chrome extension, with text analysis, document parsing, dashboards and subscriptions.","Plateforme IA qui optimise CV et lettres de motivation pour passer les filtres ATS. Architecture fullstack complète : application web, application mobile et extension Chrome, avec analyse de texte, parsing de documents, tableaux de bord et abonnements.","https:\u002F\u002Fcvleon.com",[100,101,103,104,106,108],{"translationKey":86},{"translationKey":102},"skills.react",{"translationKey":20},{"translationKey":105},"skills.adonisjs",{"translationKey":107},"skills.chromeExtension",{"translationKey":109},"skills.subscriptionSystem",{"id":111,"tags":112,"title":114,"imageName":115,"category":116,"description":119,"link":122,"skills":123},3,[113],"system","Ç","glados",{"en":117,"fr":118},"Language & compiler","Langage & compilateur",{"en":120,"fr":121},"A C-inspired functional programming language with its own compiler and virtual machine. Type safety, functions, error handling, automated tests and CI\u002FCD.","Un langage de programmation fonctionnel inspiré du C, avec son propre compilateur et sa machine virtuelle. Typage sûr, fonctions, gestion d’erreurs, tests automatisés et CI\u002FCD.","https:\u002F\u002Fgithub.com\u002FErwann-Dev\u002FGLADOS",[124,126,128],{"translationKey":125},"skills.cProgramming",{"translationKey":127},"skills.compiler",{"translationKey":129},"skills.functionalProgramming",{"id":131,"tags":132,"title":133,"imageName":134,"category":135,"description":138,"link":59,"screenshots":141,"skills":152},10,[113],"DeviAI","deviai",{"en":136,"fr":137},"Automation · backend","Automatisation · backend",{"en":139,"fr":140},"A quoting robot for insurance brokers. From a single request entered in the CRM, it signs in to the extranets of several wholesale insurers (a browser driven by Playwright, or their API), fills in their forms and sends the compared prices back through a signed webhook. The broker picks the plans and sends the client a PDF proposal in the agency’s colours. Four platforms in production.","Robot de devis pour courtiers. À partir d’une seule demande saisie dans le CRM, il se connecte aux extranets de plusieurs assureurs grossistes (navigateur piloté par Playwright, ou API), remplit leurs formulaires et renvoie les tarifs comparés par webhook signé. Le courtier coche ses formules et envoie au client une proposition PDF aux couleurs de son agence. Quatre plateformes en production.",[142,147],{"src":143,"alt":144},"deviai-tarifs.webp",{"en":145,"fr":146},"Prices compared across platforms","Tarifs comparés entre plateformes",{"src":148,"alt":149,"document":6},"deviai-proposition.webp",{"en":150,"fr":151},"PDF proposal sent to the client","Proposition PDF envoyée au client",[153,154,156,158,160],{"translationKey":80},{"translationKey":155},"skills.node",{"translationKey":157},"skills.playwright",{"translationKey":159},"skills.redis",{"translationKey":44},{"id":162,"tags":163,"title":164,"imageName":165,"category":166,"description":169,"link":59,"screenshots":172,"skills":193},11,[30],"Deviseurs en ligne","deviseurs",{"en":167,"fr":168},"Online quote tools · web","Deviseurs en ligne · web",{"en":170,"fr":171},"The online quote tools of two insurance brokerages, in production. Clients get a car, motorbike or home insurance quote in a few steps (make and model catalogues refreshed every month); the agency prices it and sends the offer as a PDF from its back office; the client then subscribes and uploads their documents on a secure portal. Every request lands in CRM Next, where a widget brings the whole back office. Over 250 automated tests.","Les deviseurs en ligne de deux cabinets de courtage, en production. Le client obtient son devis auto, moto ou habitation en quelques étapes (catalogues de marques et modèles mis à jour chaque mois) ; l’agence chiffre et envoie l’offre en PDF depuis son back-office ; le client souscrit puis dépose ses pièces sur un portail sécurisé. Chaque demande arrive dans le CRM Next, où un widget reprend tout le back-office. Plus de 250 tests automatisés.",[173,178,183,188],{"src":174,"alt":175},"deviseurs-formulaire.webp",{"en":176,"fr":177},"The public quote form","Le formulaire de devis public",{"src":179,"alt":180,"mobile":6},"deviseurs-mobile.webp",{"en":181,"fr":182},"The quote form on a phone","Le deviseur sur téléphone",{"src":184,"alt":185},"deviseurs-backoffice.webp",{"en":186,"fr":187},"The agency back office","Le back-office de l’agence",{"src":189,"alt":190,"document":6},"deviseurs-offre.webp",{"en":191,"fr":192},"PDF offer sent to the client","Offre PDF envoyée au client",[194,195,196],{"translationKey":105},{"translationKey":102},{"translationKey":80},{"id":198,"featured":6,"tags":199,"title":200,"imageName":201,"category":202,"description":203,"link":59,"skills":206},5,[8],"Louqo","louqo",{"en":12,"fr":13},{"en":204,"fr":205},"I led the redesign of the Louqo mobile app: a clearer interface, reworked core flows and secure in-app payments.","J’ai piloté la refonte de l’application mobile Louqo : interface clarifiée, parcours principaux repensés et paiement sécurisé intégré.",[207,209,211],{"translationKey":208},"skills.uiux",{"translationKey":210},"skills.mobileDevelopment",{"translationKey":212},"skills.paymentIntegration",{"id":214,"tags":215,"title":216,"imageName":217,"category":218,"description":221,"link":224,"skills":225},6,[30,50],"Pocket News AI","pocketnews",{"en":219,"fr":220},"AI web app","Application web IA",{"en":222,"fr":223},"An AI-assisted news aggregator: personalized article selection, automatic summaries and topic classification (NLP), on web and mobile.","Agrégateur d’actualités assisté par IA : sélection d’articles personnalisée, résumés automatiques et classement par thèmes (NLP), sur web et mobile.","https:\u002F\u002Fpocketnews.lanteri-enee.dev",[226,227,229],{"translationKey":86},{"translationKey":228},"skills.nlp",{"translationKey":230},"skills.responsiveDesign",{"id":232,"tags":233,"title":234,"imageName":235,"category":236,"description":239,"link":242,"skills":243},7,[30],"Let's Watch","letswatch",{"en":237,"fr":238},"Web app","Application web",{"en":240,"fr":241},"Picking a movie as a group, made easy: everyone shares their preferences, the app matches tastes, filters suggestions and lets the group vote in real time.","Choisir un film à plusieurs, sans débat sans fin : chacun indique ses préférences, l’application croise les goûts, filtre les suggestions et fait voter le groupe en temps réel.","https:\u002F\u002Flets-watch.lanteri-enee.dev\u002F",[244,245,246],{"translationKey":230},{"translationKey":208},{"translationKey":247},"skills.realtimeUpdates",{"id":249,"tags":250,"title":251,"imageName":252,"category":253,"description":256,"link":259,"skills":260},8,[30],"Bunker Finder","bunkerfinder",{"en":254,"fr":255},"Web app · mapping","Application web · cartographie",{"en":257,"fr":258},"An interactive map of the bunkers and shelters listed in OpenStreetMap. Built with React and Leaflet: OSM data parsing, geolocation and dynamic map rendering.","Carte interactive des bunkers et abris référencés dans OpenStreetMap. Développée en React et Leaflet : parsing des données OSM, géolocalisation et rendu dynamique sur carte.","https:\u002F\u002Fbunker-finder.erwann-dev.fr\u002F",[261,262,264,266,268],{"translationKey":102},{"translationKey":263},"skills.leaflet",{"translationKey":265},"skills.openStreetMap",{"translationKey":267},"skills.geolocation",{"translationKey":269},"skills.mapVisualization",1794514164779]