Aller au contenu

Antibes, France

JohannAvramov

Développeur Full-Stack TypeScript / PHP

Angular · TypeScript · React · Node.js · Symfony

Relocalisation en Suisse romande (Genève - Lausanne) dès la signature d'un contrat · Citoyen UE (permis B) · Disponible sous 1 mois

  • Français (langue maternelle)
  • Anglais (C1)
  • Allemand (notions)
Portrait de Johann Avramov

Profil

Développeur full-stack chez Orange à Sophia Antipolis depuis février 2025, avec un rôle de tech lead front-end sur une équipe de trois développeurs, dans un contexte SAFe de vingt personnes.

Je travaille au quotidien sur Angular, TypeScript, Node.js et Symfony, avec GitLab CI/CD, Docker et GCP. J'ai conduit la migration d'applications critiques d'Angular 8 vers Angular 21 et de Symfony 5 vers Symfony 7, en portant la couverture SonarQube de 65 % à 85 %.

Avant Orange, j'ai fondé et dirigé AzurIT, une SARL de deux salariés, et livré trois produits SaaS en quatorze mois. Je recherche aujourd'hui un poste de développeur en Suisse romande, entre Genève et Lausanne.

produits SaaS livrés
3produits SaaS livrés
comptes créés sur Datark
1 500comptes créés sur Datark
grands comptes : Orange, Amadeus
2grands comptes : Orange, Amadeus
Projets

Ce que j'ai construit.

Quatre produits conçus et développés de bout en bout, de la définition du besoin à la mise en production.

Plateforme open-access pour les sciences du patrimoine.

  • Next.js
  • NestJS
  • PostgreSQL
  • TypeScript
  • Stripe
  • Copyleaks

Contexte

Plateforme open-access pour les sciences du patrimoine (archéologie, histoire, conservation) : dépôt de publications PDF, recherche via le thésaurus PACTOLS, collaboration en co-auteurs et abonnements.

Ce que j'ai construit

Refonte complète d'une plateforme déjà en production, qui compte 1 500 comptes créés : passage d'Angular, Express et MongoDB à Next.js, NestJS et PostgreSQL, avec une migration de données progressive.

Points techniques

  • Migration de données progressive de MongoDB vers PostgreSQL, sans interruption de la plateforme en production.
  • Détection de plagiat via l'API Copyleaks : soumission du PDF, réception asynchrone des résultats par webhook à signature HMAC-SHA256 vérifiée, machine à états exposée à l'interface et notification des administrateurs pour revue manuelle. Intégration en mode sandbox.
  • Dégradation gracieuse du service tiers : sans clé API le scan est marqué comme ignoré, en cas d'erreur réseau il est marqué en erreur, et le dépôt de la publication aboutit dans les deux cas.
  • Recherche indexée sur le thésaurus PACTOLS et gestion des co-auteurs sur chaque dépôt.

Architecture

  • client
  • api
  • db
  • external
  • Next.js
  • NestJS
  • PostgreSQL
  • Stripe
  • Copyleaks
  • Next.jsNestJS· REST
  • NestJSPostgreSQL· SQL
  • NestJSStripe· abonnements
  • NestJSCopyleaks· webhook signé

AquaPro Manager

Voir le produit

Application web de gestion pour les professionnels de la piscine.

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS
  • shadcn/ui
  • Firebase
  • Stripe
  • Zod
  • Vitest

Contexte

Les professionnels de l'entretien de piscines suivent leurs clients, leurs interventions et leur facturation entre notes papier, messageries et tableurs. Rien n'est relié, et l'historique client se perd.

Ce que j'ai construit

Application web responsive de gestion pour professionnels de la piscine : SaaS multi-tenant couvrant les clients, les piscines, les interventions, le stock, les produits, la comptabilité et la facturation, avec des abonnements Stripe.

Points techniques

  • Modèle multi-tenant avec isolation des données par entreprise.
  • Abonnements et facturation Stripe reliés au cycle de vie des interventions.
  • Modules devis et factures, comptabilité, stock, fournisseurs et suivi des employés.
  • Validation des formulaires par schémas Zod avec react-hook-form, tableaux de bord Recharts et tests Vitest.
  • Instrumentation OpenTelemetry et suivi des performances.

Architecture

  • client
  • api
  • db
  • external
  • Next.js App Router
  • Firebase Admin
  • Firebase
  • Stripe
  • Next.js App RouterFirebase Admin· server actions
  • Firebase AdminFirebase· lecture / écriture
  • Firebase AdminStripe· abonnements

AirsoftHub

Projet en pause

Plateforme de gestion pour associations d'airsoft.

  • React 18
  • Vite
  • TypeScript
  • Supabase
  • PostgreSQL
  • Tailwind CSS
  • shadcn/ui
  • Vitest

Contexte

Les associations d'airsoft gèrent leurs membres, leurs réservations de terrain, leurs cotisations et leur inventaire à la main, entre tableurs et messageries.

Ce que j'ai construit

Plateforme unique regroupant la gestion des membres, la réservation de créneaux, la facturation automatisée et le contrôle d'accès par QR code, répartie sur dix-huit modules fonctionnels.

Points techniques

  • Sécurité multi-tenant appliquée au niveau de la base : politiques Row Level Security PostgreSQL sur Supabase, dans une migration dédiée.
  • Neuf Edge Functions métier : réservation de créneau, génération de facture PDF et de QR code, invitation de membres, gestion d'inventaire, rappels programmés et envoi d'e-mails.
  • Six migrations SQL versionnées pour faire évoluer le schéma.
  • Garde-fous de build maison, bloquants en développement comme à la compilation : détection de données simulées, validation de la configuration Supabase et vérification de l'environnement.

Architecture

  • client
  • api
  • db
  • external
  • React + Vite
  • Edge Functions
  • PostgreSQL + RLS
  • Supabase Auth
  • React + ViteEdge Functions· invoke
  • Edge FunctionsPostgreSQL + RLS· SQL
  • React + ViteSupabase Auth· session

MamaSafeFood

Voir le produit

Application mobile d'aide à la décision alimentaire pendant la grossesse.

  • React Native
  • Expo
  • TypeScript
  • Firebase
  • Cloud Functions
  • Google Gemini
  • RevenueCat

Contexte

Pendant une grossesse, vérifier qu'un aliment est sans risque suppose de croiser des sources médicales dispersées. Ce n'est pas exploitable devant un rayon de supermarché ou une carte de restaurant.

Ce que j'ai construit

Application mobile qui identifie les ingrédients à partir d'une photo de plat ou d'une carte de restaurant, puis rend un verdict adapté au profil de grossesse : vert, orange ou rouge, avec une explication et le détail ingrédient par ingrédient.

Points techniques

  • Reconnaissance des ingrédients et analyse du risque par l'API Google Gemini, avec deux modes de saisie : photo de plat et carte de restaurant.
  • Robustesse de l'appel au modèle : trois tentatives avec temporisation progressive, reprise uniquement sur les codes 429 et 5xx, bascule vers un modèle de repli, récupération des réponses JSON tronquées et plafond de taille d'image.
  • Verdict calculé à partir du profil : trimestre, immunité à la toxoplasmose, allergies et mode de préparation déclarés par l'utilisatrice.
  • Migration de Supabase vers Firebase : authentification, Firestore, stockage et Cloud Functions.
  • Abonnements gérés via RevenueCat, connexion Google et Apple, tests Jest sur les fonctions d'analyse.

Architecture

  • client
  • api
  • db
  • external
  • Expo / React Native
  • Cloud Functions
  • Firestore
  • Google Gemini
  • RevenueCat
  • Expo / React NativeCloud Functions· HTTPS
  • Cloud FunctionsFirestore· lecture / écriture
  • Cloud FunctionsGoogle Gemini· analyse
  • Expo / React NativeRevenueCat· abonnements
Parcours

Mon parcours.

Full-Stack Engineer, tech lead front-end

Orange

Février 2025 - aujourd'huiSophia Antipolis, France
  • Migration d'applications critiques d'Angular 8 vers Angular 21 et de Symfony 5 vers Symfony 7, avec une couverture SonarQube portée de 65 % à 85 %.
  • Rôle de tech lead front-end sur une équipe de trois développeurs, au sein d'une équipe de vingt personnes organisée en SAFe.
  • Mise en place du TDD et d'une couverture Jest supérieure à 90 % : moyenne de bugs par sprint ramenée de 18 à 3.
  • Délai de mise en production réduit de 1 à 2 jours à 2 à 3 heures, via GitLab CI/CD, Docker et une stratégie de rollback.
  • Développement de fonctionnalités sur Cockpit, la plateforme de gestion de campagnes omnicanale d'Orange, et exploitation des services sur GCP.
  • Angular
  • TypeScript
  • Symfony
  • PHP 8
  • GitLab CI/CD
  • Docker
  • GCP
  • MySQL
  • Jest

Fondateur et lead developer

AzurIT (SARL)

Septembre 2023 - Novembre 2024Antibes, France
  • Création et direction d'une SARL de deux salariés, de la définition produit jusqu'à l'exploitation.
  • Trois produits SaaS livrés en quatorze mois : Datark, AquaPro Manager et MamaSafeFood.
  • Conception des API REST, des modèles de données et de la logique métier, du recueil du besoin au déploiement et à la maintenance.
  • Automatisation de l'extraction de données avec Puppeteer : logique de reprise, sélecteurs de repli et exports structurés.
  • Activité arrêtée volontairement fin 2024 pour rejoindre un environnement corporate.
  • Next.js
  • React
  • Node.js
  • NestJS
  • MongoDB
  • Firebase
  • Stripe
  • Puppeteer

Développeur back-end (alternance)

Amadeus

2022 - 2023Sophia Antipolis, France
  • Développement et optimisation de fonctionnalités back-end sur la plateforme Loyalty (panier, gestion des points), au sein d'une équipe Agile SAFe.
  • Implémentation et maintenance d'API REST en Java, Spring Boot et Oracle DB.
  • Écriture et automatisation de tests JUnit, jusqu'à 95 % de couverture de code.
  • Accompagnement des mises en production et coordination avec les équipes infrastructure et produit.
  • Java
  • Spring Boot
  • API REST
  • Oracle DB
  • JUnit
  • SAFe

Développeur full-stack (alternance)

Native Spaces

2021 - 2022Nice, France
  • Développement de modules front-end en React pour des interfaces de production responsives.
  • Développement back-end en PHP et MySQL : API REST, couches d'accès aux données et optimisation de requêtes.
  • Intégration de services externes (Stripe, API Google) et outillage interne d'automatisation.
  • React
  • PHP
  • MySQL
  • Stripe
  • API Google

Développeur web (pendant les études)

Freelance

2017 - 2021France
  • Développement de sites et d'applications web pour de petites structures, en parallèle des études.
  • PHP
  • MySQL
  • JavaScript
Compétences

Compétences techniques.

Classées par niveau de pratique réelle, et non par exhaustivité.

Au quotidien

Utilisé tous les jours en production
  • Angular
  • TypeScript
  • Node.js
  • Symfony
  • PHP 8
  • GitLab CI/CD
  • Docker
  • GCP
  • MySQL
  • Jest

Solide

Plusieurs projets livrés
  • React
  • Next.js
  • NestJS
  • MongoDB
  • Firebase
  • Cypress

Notions

Pratique ponctuelle ou ancienne
  • Java / Spring Boot
  • Vue 3
Enseignement

Enseignement.

Enseignant en développement web

Université Côte d'Azur

Depuis septembre 2025 · Temps partiel

J'enseigne le développement web à des étudiants de l'Université Côte d'Azur et je conçois les supports de travaux pratiques.

ReactNext.jsVue 3TypeScriptAlgorithmique
Contact

Prenons contact.

Je recherche un poste de développeur full-stack en Suisse romande, entre Genève et Lausanne.

Relocalisation dès la signature d'un contrat. Citoyen français, permis B par la libre circulation. Disponible sous 1 mois, correspondant à mon préavis contractuel. Entretiens sur place sous 72 heures.

M'écrire un e-mail