Geoffrey Bonneville

Senior software engineer - Fullstack JS

Paris, France

Coordonnées

Présentation

Ingénieur logiciel avec 7 ans d'expérience. Je travaille sur des technologies Fullstack JS. J'utilise principalement Node.js, React.js, React Native, et Electron. 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

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
-

Langues

Français
Langue native
Anglais
Niveau professionnel

Centres d'intérêt

Badminton
Apprentissage de la guitare électrique

Compétences

Fonctionnelles: Developpement Fullstack (Frontend & Backend), Conception et modélisation de logiciels, Développement sur le modèle MVC, Mise en production, Rédaction de documentation, Sprint pokers
Langages: JavaScript, TypeScript, HTML, CSS/SASS, JSON/YAML, Python, C/C++, Rust, Bash
Frameworks & Bibliothèques: Node.js, React.js, Next.js, React Native (+Expo), Electron, Express.js, Nest.js, Webpack, Metro bundler, Qt, Protractor, Android SDK, 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
Méthodologies: Kanbans (Jira, Github...), Agile / Scrum, Sprint poker, Test Driven Development (TDD), Revues de code, Semver, Monorepo, Peer programming

Expériences

PikaTorrent Company logo

Créateur et développeur principal
- 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.
  • Partage de code entre les plateformes avec react-native-web.
  • Organisation de plusieurs projets dans un monorepo.
  • Possibilité de lier l'application mobile et desktop en peer-to-peer grâce à Websocket et WebRTC.
  • Définition et implémentation d'un protocole d'échanges de messages via WebRTC.
  • Publication sur différents app stores: 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.
  • Rédaction de documentation technique et pour contribuer aux traductions.
  • Communication du projet sur Internet.
Langages: TypeScript, JavaScript, C/C++, Java
Frameworks & Bibliothèques: React.js, React Native, Expo, Node.js, Next.js, Electron, Redux
Protocoles: WebRTC, Websocket, BitTorrent
Outils: Git, Docker/Podman, Npm, Github actions, Github, cmake
Méthodologies: Issues et milestones sur Github, Monorepo, Semver, Code reviews

Projet de plateforme CRM

CTO associé
-

Développement d'une plateforme CRM 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

Ingénieur frontend
-

Développement d'une application de sécurisation et décentralisation des données personnelles (Masq). + Qwant Search & 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, 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 avec Express et Angular.

  • 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.
  • 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.
  • Acquisition d'expérience en C/Java/Android(AOSP), 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