Geoffrey Bonneville

Senior software engineer - JavaScript Full Stack - Mobile

Paris, France

Coordonnées

Présentation

Ingénieur logiciel avec 8 ans d'expérience. Je travaille sur des technologies Fullstack JS. J'utilise principalement Node.js, React.js, React Native, Electron, et Flutter. Je suis persévérant et créatif pour trouver des solutions techniques, et n'hésite pas à utiliser des technologies bas niveau lorsque la performance est une priorité. Je contribue à des projets open source, et développe PikaTorrent, une application de partage de fichiers en peer-to-peer.

Github
G-Ray
LinkedIn
gbonneville

Compétences

Fonctionnelles: Developpement Fullstack (Frontend & Backend), Architecture logicielle (conception et modélisation, MVC, MVVM, MVW...), microservices, Monorepo, Poker planning, Intégration continue, Mise en production, Rédaction de documentation
Langages: JavaScript, TypeScript, HTML, CSS/SASS, Dart, JSON/YAML, Python, C/C++, Rust, Bash
Frameworks & Bibliothèques: Node.js, React.js, Next.js, Redux, React Native (+Expo), Electron, Express.js, Nest.js, Webpack, Metro bundler, Flutter, Qt, Protractor, Android SDK/NDK, Cypress, Jest
Bases de données & moteurs de recherche: MongoDB, PostgreSQL, MariaDB, Apache Cassandra, Elasticsearch
Protocoles: HTTP, REST, WebRTC, Websocket, BitTorrent, Hypercore, FTP, TCP/UDP, MQTT
IDEs & Editeurs: Visual Studio Code, IntelliJ IDEA, Android Studio, Qt Creator, Eclipse, Vim/Neovim
Outils: Git, Docker/Podman, Kubernetes, Npm/Yarn, Github actions, Travis CI, Cargo, Postman, JIRA, RabbitMQ, Github, Gitlab, Bitbucket
Systèmes: Linux (RHEL, Debian, Fedora), Windows, Android AOSP
Méthodologies: Kanbans (Jira, Github...), Agile / Scrum, Sprint poker, Test Driven Development (TDD), Revues de code, Semver, Monorepo, Peer programming

Diplômes

Ecole d'Ingénieur Denis Diderot (EIDD) Établissement logo
Informatique, spécialité systèmes embarqués
-
IUT de Paris Rives de Seine (ex Paris Descartes) Établissement logo
Informatique
-
Lycée Joseph Talma Établissement logo
Baccalauréat S
-

Expériences

PikaTorrent Company logo

Créateur et développeur principal Full Stack / Devops
- Present

Application open source pour mobile, desktop et web de partage de fichiers en peer-to-peer.

  • Développement de l'application web et desktop avec React.js et Electron.
  • Développement mobile avec React Native.
  • Développement backend Node.js et React Native en C/C++ pour libtransmission, une bibliothèque BitTorrent.
  • Ré-écriture du logiciel avec Flutter/Dart/C++, afin de simplifier le développement multi-plateforme.
  • Développement de plugins natifs (C++, Java) pour faire fonctionner la couche C++ sur mobile (Android et iOS)
  • Contributions à la bibliothèque C++ du projet open source Transmission (https://transmissionbt.com)
  • Organisation de sous-projets dans un monorepo.
  • Définition et implémentation d'un protocole d'échanges de messages en p2p via WebRTC et Websocket.
  • Publication sur des canaux de distributions: Google Play Store, Microsoft Store, Flathub.org, et Github Releases.
  • Mise en place de tests d'intégration, et déploiement continue (CI/CD) avec GitHub Actions.
  • Communication du projet sur Internet.
Langages: TypeScript, JavaScript, Dart, C/C++, Java
Frameworks & Bibliothèques: React.js, React Native, Expo, Node.js, Next.js, Electron, Flutter, Android SDK/NDK
Protocoles: BitTorrent, WebRTC, Websocket
Outils: Git, Docker/Podman, Npm, Github actions, Github, cmake
Méthodologies: Issues et milestones sur Github, Monorepo, Semver, Code reviews

XXII Company logo

Développeur Full-Stack JS/TS, Node.js/React.js
-

Développement d'applications web d'analyses de vidéos par IA, dans une équipe de 4 développeurs, 2 POs et 1 designer.

  • Développement de nouvelles fonctionnalités s'inscrivant dans la roadmap des produits.
  • Réalisation d'un PoC d'intégration d'APIs de LLM/VLM (IA) dans le cadre d'un hackaton.
  • Réduction de la dette technique: identifications de dettes, suppressions de code et conversions de modules JavaScript vers TypeScript.
  • Collaboration continue avec l'équipe produit pour améliorer l'UX et affiner des fonctionnalités.
  • Rédaction détaillée de conceptions techniques. Définition d'interfaces avec d'autres équipes. Création de tickets.
  • Participation aux ateliers de découpages, chiffrages, et aux réunions daily.
  • Débug et corrections des applications existantes.
Langages: TypeScript, JavaScript, CSS/SCSS, Yaml/JSON, Bash
Frameworks & Bibliothèques: React.js, Next.js, Vite, Node.js, Express.js, Tailwind CSS, Antd
Protocoles: REST, Websocket
Outils: Git, Docker, Yarn, Gitlab, Jira, Storybook, Kubernetes
Méthodologies: Agile, Code reviews

Projet de plateforme CRM

CTO et développeur principal
-

Développement d'une plateforme CRM "from scratch" en SAAS, avec un associé commercial.

  • Architecture et développement de l'application fullstack avec React.js, Express.js, et MongoDB.
  • Création d'un moteur de recherche full text avec Elasticsearch.
  • Développement d'un microservice de parsing de documents en Python.
  • Développement d'une application mobile avec React Native.
  • Développement d'une extension Chrome/Firefox
  • Mise en place et développement de tests unitaires, fonctionnels, et d'intégration avec Cypress.
  • Création et publications d'images Docker.
  • Déploiement des services sur kubernetes.
  • Gestion d'un cluster Kubernetes et déploiement des services en SAAS: gestion de sous-domaines, certificats TLS (https), séparation des données clients...
  • Mise en place d'outils d'amélioration du code: linters de code et formatters (eslint/prettier).
  • Mise à contribution d'un développeur junior.
  • Sécurisation de données sensibles avec du chiffrement.
  • Création et déploiement de scripts de backups de données.
Langages: TypeScript, JavaScript, Python
Frameworks & Bibliothèques: React.js, React Native, Node.js, Next.js, Flask, Webpack
Protocoles: HTTP, REST, MQTT
Outils: Git, Docker/Podman, Kubernetes, Npm, Github actions, Postman, Github, RabbitMQ
Méthodologies: Issues sur Github, Monorepo, Code reviews

Qwant Company logo

Développeur JavaScript/React.js
-

Développement d'une application de sécurisation et décentralisation des données personnelles (Masq), dans une équipe de 3 développeurs et une équipe design produit. Puis Qwant Search & Qwant Maps

  • Mise en place de l'architecture et prise de responsabilités sur l'application web en React.js et Redux.
  • Propositions et utilisation de technologies peer-to-peer via WebRTC pour établir des communications en peer-to-peer entre appareils.
  • Mise en place et développement de tests par snapshots avec Jest.
  • Participation aux code reviews et pair programming.
  • Implémentation from scratch en CSS/SASS des designs fournis par l'équipe en charge des produits.
  • Mise en place d'outils d'amélioration du code: linters de code et formatters (eslint/prettier).
  • Qwant Maps: participation à la refonte de l'interface en React.js.
  • Qwant Search: développement d'un microservice en Rust performant et léger pour categoriser des sites web. Développement en TTD (≃ 1mois).
  • Participation aux sprint pokers.
Langages: JavaScript, Rust
Frameworks & Bibliothèques: React.js, React Native, Node.js, Webpack, Nest.js, Redux, Jest
Outils: Git, Github, Npm, JIRA, Docker / Podman
Méthodologies: Agile / SCRUM, Sprint pokers, Code reviews, Test Driven Development (TDD), Pull requests, Peer programming

GetQuanty Company logo

Developpeur fullstack Node.js/Angular
-

Développement fullstack d'un équivalent à Google Analytics orienté B2B, au sein d'une équipe de 4 développeurs, un data scientist, et un product owner.

  • Maintenance et évolution de la plateforme web fullstack avec Node.js, Express.js, Angular, et MongoDB.
  • Développement d'un moteur de recherche avec ElasticSearch.
  • Architecture, développement, et migration de données vers Apache Cassandra.
  • Documentation des APIs avec Swagger (OpenAPI).
  • Participation à la migration de Angular 1 vers Angular 2+ en TypeScript, et refactorisations du code.
  • Proposition et implémentations de schémas de données dans MongoDB, ElasticSearch et CassandraDB.
  • Participation à la création de tests E2E pour stabiliser la plateforme.
  • Amélioration des performances de la CI en parallélisant les tests.
  • Mise en place d'outils d'amélioration du code: linters de code et formatters (eslint/prettier).
  • Participation aux sprint pokers.
Langages: JavaScript, TypeScript
Frameworks & Bibliothèques: AngularJS/Angular, Express.js, Node.js, Webpack, Protractor
Protocoles: HTTP, REST, gRPC
Outils: Git, JIRA, Bitbucket, Npm, Docker / Podman
Méthodologies: Agile / SCRUM, Sprint pokers, Pull requests, Code reviews

Open Wide (Rachetée par Smile) Company logo

Stage de fin d'étude en R&D.
-

Développement de PoCs avec un noyau Linux temps réel sur Android, sur plateforme embarquée ARM.

  • Ajout du support d'interfaces industrielles(I2C, GPIO, etc...) et d'un kernel temps-réel (Xenomai) dans Android AOSP.
  • Réalisation de benchmarks entre OpenPOWERLINK, avec, et sans RTnet.
  • Extension des fonctionnalités d'Android (C/Java) en modifiant le SDK.
  • Intégration de la bibliothèque glibc dans Android.
  • Réalisation d'applications de tests temps-réel avec Android 6.0 sur Beaglebone black. Avec un noyau linux 4.1 + Xenomai 3.x.
  • Développement dans la stack complète Android AOSP, en C et Java. (Services, JNI...)
  • Compilation de noyaux Linux en cross-compilation, modifications de modules et drivers.
  • Rédaction d'un article paru dans le magazine Open Silicium présentant une partie des travaux.
Langages: C/C++, JAVA, Bash
Frameworks & Bibliothèques: AOSP (Android), Android SDK, Xenomai
Outils: gcc
Méthodologies: Agile / SCRUM, Sprint pokers, Pull requests, Code reviews

Contributions opensource

Transmission

Ajout du support d'Android pour compiler libtransmission. Développement d'un job Github Actions pour vérifier la compilation dans la CI. Correction de bugs et documention.

random-access-idb

Correction d'un important souci de performance observé lors de l'usage avec le projet Qwant Masq.

signalhubws

Remplacement d'une bibliothèque pour utiliser des websockets non supportée par les version de Node.js >.10. Dans le cadre du projet Qwant Masq.

Popcorn Time

Développement d'une fonctionnalité de lecture de bande annonces de films. Développement en JavaScript avec node-webkit (équivalent Electron). Implémentation du lecteur qui ouvre une bande-annonce. Contribution pour des millions d'utilisateurs.

LineageOS (ex CyanogenMod), fork de Android AOSP.

- Present

Correction de la compilation du projet pour Google Nexus 4, dû à une bibliothèque manquante.

Langues

Français
Langue native
Anglais
Niveau professionnel

Centres d'intérêt

Badminton
Apprentissage de la guitare électrique