Retour

Développeur Full Stack

TerrOïko

Juin 2025 — Mai 2026

Symfony · Vue 3 · TypeScript · Python · Rust (Tauri) · Keycloak · RabbitMQ · Docker

Résumé de la mission :

Au sein de TerrOïko, éditeur de solutions numériques dédiées à la biodiversité, j'ai travaillé sur trois produits distincts : une plateforme web d'annotation d'images assistée par IA, un outil de diagnostic de la biodiversité construit from scratch, et une application desktop de simulation écologique. J'ai autant travaillé seul, en autonomie complète sur des refontes techniques, qu'en équipe sur la mise en place d'architectures distribuées (SSO Keycloak, communication inter-services via message bus). Une mission marquée par la diversité des stacks abordées et par une forte exigence de qualité sur du code destiné à être repris par d'autres développeurs.

Mes activités principales :

  1. Plateforme d'annotation d'images assistée par IA :
    En binôme avec un autre développeur, refonte progressive d'une codebase Symfony legacy devenue difficile à maintenir.
    - Intégration de la bibliothèque Annotorious pour l'annotation d'images, pilotée côté front via un contrôleur Stimulus.
    - Gestion d'un enjeu de performance front lié au volume d'éléments annotés à afficher simultanément.
    - Consommation d'une API d'inférence IA existante pour la pré-annotation automatique des images.
    Stack : Symfony · TypeScript · Stimulus · Annotorious · API IA externe
  2. Outil de diagnostic de la biodiversité (from scratch) :
    Construction d'un outil de diagnostic permettant des évaluations standardisées de l'état de la biodiversité à différentes échelles, en équipe de 2 développeurs et un apprenti, jusqu'à la mise en production. Mon apport principal : défricher plusieurs briques techniques nouvelles pour l'équipe.

    Mise en place du SSO via Keycloak :
    - Configuration complète de Keycloak (realms, clients, rôles, mapping d'attributs, gestion des refresh tokens).
    - Démarrage de l'intégration côté Symfony via une bibliothèque PHP dédiée.
    - Adaptation des Dockerfiles et de la pipeline GitLab CI pour intégrer Keycloak dans les environnements de dev et de prod.

    Communication inter-services Symfony ↔ Python via RabbitMQ :
    - Mise en place d'une architecture asynchrone entre l'application Symfony et un service Python dédié à la génération de documents.
    - Prise en main du broker, configuration du transport, design des messages échangés via le Messenger Bus de Symfony.

    Service Python de génération de PDF :
    - Développement d'une commande Python consommant les messages envoyés depuis Symfony via RabbitMQ.
    - Génération de rapports PDF complets à partir de données métier (diagnostics, indicateurs de biodiversité), restitués à l'utilisateur final.
    - Conception de la couche d'échange (format des messages, contrat d'interface Symfony ↔ Python).
    Stack : Symfony · Python · Keycloak (SSO) · RabbitMQ · Messenger Bus · Docker · GitLab CI
  3. Refonte du front d'une application desktop Tauri (simulation écologique) :
    Seul sur cette mission, j'ai proposé et porté de bout en bout la refonte du front d'un logiciel de simulation de la vie de la faune et de la flore dans un paysage numérisé.
    - Constat : le front TypeScript existant était monolithique (fichiers très volumineux, peu maintenables).
    - Choix d'architecture : migration vers Vue 3 par composants, avec Axios pour la couche HTTP et gestion fine des CORS pour les appels au backend.
    - Vue 3 plutôt que React : choix assumé pour la lisibilité de la passation aux développeurs suivants.
    - Légère intervention côté Rust (refactoring de méthodes existantes).
    - Participation aux décisions d'architecture API REST côté backend du produit.
    Stack : Tauri · Rust · Vue 3 · TypeScript · Axios

Compétences techniques mises en œuvre :

  • Backend : Symfony, API REST, Messenger Bus, Python (génération PDF, consommateur RabbitMQ)
  • Frontend : Vue 3, TypeScript, Stimulus, Axios, Annotorious
  • Auth & Sécurité : Keycloak (SSO complet), OAuth 2.0, gestion CORS
  • Architecture distribuée : RabbitMQ, communication inter-services Symfony ↔ Python, design d'API REST
  • Desktop : Tauri (Rust + webview), refonte d'architecture front
  • DevOps & outillage : Docker, Dockerfiles, GitLab CI
  • Méthodologie : refonte de codebases legacy, défrichage de technos nouvelles, choix de stack orientés pérennité

Résultats et accomplissements :

  • Mise en production de l'outil de diagnostic de la biodiversité, avec un SSO Keycloak fonctionnel, une communication asynchrone fiable entre Symfony et Python, et un service de génération de PDF métier.
  • Refonte du front de l'application desktop vers une architecture Vue 3 par composants, plus maintenable et plus facile à reprendre.
  • Refonte progressive de la codebase legacy de la plateforme d'annotation, avec amélioration de la stabilité.
  • Montée en compétence sur trois technos abordées pour la première fois : Keycloak, RabbitMQ et Tauri/Rust.