Portfolio

Tout ce qui est en production.

21 produits, chacun avec les plateformes sur lesquelles il tourne, la stack qui le porte et les systèmes avec lesquels il parle. Le lien ouvre le produit en direct.

Stack

Avec quoi je construis vraiment.

Pas la liste de tout ce que j'ai ouvert une fois. Voici les outils qui portent des systèmes en production, regroupés par ce à quoi ils servent.

Langages

  • Swift
  • Kotlin
  • TypeScript
  • JavaScript
  • Python
  • Java
  • Objective C
  • SQL

Mobile

  • SwiftUI
  • UIKit
  • Jetpack Compose
  • Wear OS
  • Core Data
  • GRDB
  • Bornes Android
  • TestFlight

Backend

  • NestJS
  • Node.js
  • Express
  • Fastify
  • FastAPI
  • Prisma
  • REST
  • GraphQL
  • BullMQ

Données

  • PostgreSQL
  • Cloud SQL
  • Firestore
  • Redis
  • MongoDB
  • MySQL
  • Entrepôt de données
  • PgBouncer

Cloud

  • Google Cloud
  • Cloud Run
  • Firebase
  • Docker
  • Kubernetes
  • Vercel
  • Cloudflare
  • Secret Manager

Intelligence artificielle

  • LLM multi fournisseur
  • RAG
  • OCR Cloud Vision
  • Prévision
  • TensorFlow
  • PyTorch
  • Core ML
  • Ollama

Web

  • Next.js
  • React
  • TanStack Query
  • TailwindCSS
  • Vite
  • Three.js
  • Générateurs statiques
  • Web Components

Sécurité

  • OWASP
  • Burp Suite
  • Nmap
  • Wireshark
  • Metasploit
  • Kali Linux
  • Splunk
  • Audit des permissions

Comment c'est construit

  1. Types stricts

    TypeScript en mode strict sans échappatoire, vérification de concurrence de Swift 6, schémas validés à chaque frontière.

  2. Permission par défaut

    Chaque route déclare la permission dont elle a besoin et un script d'intégration continue fait échouer le build quand il en manque une.

  3. Offline first

    Une base locale et une file de synchronisation idempotente, parce qu'une caisse ne peut pas s'arrêter quand la ligne tombe.

  4. Un seul modèle de données

    Les produits se parlent par contrats signés plutôt que par exports, ainsi le même chiffre n'a jamais deux versions.

  5. Pensé pour sept langues

    Les chaînes d'interface vivent hors du balisage, avec un repli qui garde la page lisible quand une clé manque.