From 1ca44756b7ee0df8219f814fbcf12b9b349dd3f1 Mon Sep 17 00:00:00 2001 From: Johan Leroy Date: Mon, 20 Apr 2026 13:11:30 +0000 Subject: [PATCH] Actualiser README.md --- README.md | 284 ++++++++++++++++++++++++------------------------------ 1 file changed, 125 insertions(+), 159 deletions(-) diff --git a/README.md b/README.md index f55e637..27941d3 100644 --- a/README.md +++ b/README.md @@ -1,161 +1,127 @@ -# 👋 Salut, moi c'est Johan - - 🎧 Dév le jour, DJ la nuit - 💻 Développeur fullstack passionné par les technos modernes - 🚀 J'aime créer des expériences web performantes, propres et scalables - - --- - - ## 🧠 À propos de moi +# 👋 Salut, moi c'est Johan - - 🔭 Je bosse sur des projets en **NestJS 11**, **Nuxt 3**, **Next.js 16**, **Vue 3**, **MariaDB**, - **TailwindCSS 4** - - ⚙️ Stack préférée : `NestJS` + `Nuxt` / `Next.js` + `TypeORM` + `MariaDB` + `Tailwind` - - ☁️ Infra AWS (ECS, Lambda, RDS, CloudFront, SES) pilotée en **Terraform** - - 🛠️ Reverse proxy & hébergement : `NGINX`, `Apache`, `Plesk` - - 🔐 Auth : `JWT` access+refresh, `OAuth2 PKCE`, cookies httpOnly, chiffrement AES-256-GCM - - 📨 Queues & temps réel : `BullMQ`, `Redis`, `Socket.IO`, `SQS` - - 🧩 J'aime structurer mes projets avec des archis propres (Strategy/Adapter, services découplés) - - 🎨 Fan de UI bien léchée : design systems glass, dark/light mode, animations douces, UX fluide - - 🎵 DJ & passionné de tekno, mes projets web ont parfois un petit beat qui groove 😎 - - --- - - ## 🛠️ Technologies & Outils - - ### 🧑‍💻 Langages esc to interrupt - - ![Java](https://img.shields.io/badge/-Java-007396?style=for-the-badge&logo=openjdk&logoColor=white) - ![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=for-the-badge&logo=javascript&logo - Color=black) - ![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=for-the-badge&logo=typescript&logo - Color=white) - ![Python](https://img.shields.io/badge/-Python-3776AB?style=for-the-badge&logo=python&logoColor=white) - ![PHP](https://img.shields.io/badge/-PHP-777BB4?style=for-the-badge&logo=php&logoColor=white) - ![C#](https://img.shields.io/badge/-C%23-239120?style=for-the-badge&logo=dotnet&logoColor=white) - ![C++](https://img.shields.io/badge/-C++-00599C?style=for-the-badge&logo=cplusplus&logoColor=white) - ![Dart](https://img.shields.io/badge/-Dart-0175C2?style=for-the-badge&logo=dart&logoColor=white) - ![Kotlin](https://img.shields.io/badge/-Kotlin-7F52FF?style=for-the-badge&logo=kotlin&logoColor=white) - - ### 🧩 Frameworks & Libraries - - ![NestJS](https://img.shields.io/badge/-NestJS-E0234E?style=for-the-badge&logo=nestjs&logoColor=white) - ![Next.js](https://img.shields.io/badge/-Next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=w - hite) - ![React](https://img.shields.io/badge/-React-61DAFB?style=for-the-badge&logo=react&logoColor=black) - ![Vue.js](https://img.shields.io/badge/-Vue.js-4FC08D?style=for-the-badge&logo=vuedotjs&logoColor=whit - e) - ![Nuxt](https://img.shields.io/badge/-Nuxt-00DC82?style=for-the-badge&logo=nuxt&logoColor=white) - ![Angular](https://img.shields.io/badge/-Angular-DD0031?style=for-the-badge&logo=angular&logoColor=whi - te) - ![Vite](https://img.shields.io/badge/-Vite-646CFF?style=for-the-badge&logo=vite&logoColor=white) - ![Pinia](https://img.shields.io/badge/-Pinia-FFD859?style=for-the-badge&logoColor=black) - ![Socket.IO](https://img.shields.io/badge/-Socket.IO-010101?style=for-the-badge&logo=socketdotio&logoC - olor=white) - ![Vuetify](https://img.shields.io/badge/-Vuetify-1867C0?style=for-the-badge&logo=vuetify&logoColor=whi - te) - ![shadcn/ui](https://img.shields.io/badge/-shadcn%2Fui-000000?style=for-the-badge&logo=shadcnui&logoCo - lor=white) - ![Spring](https://img.shields.io/badge/-Spring-6DB33F?style=for-the-badge&logo=spring&logoColor=white) - ![Express.js](https://img.shields.io/badge/-Express.js-000000?style=for-the-badge&logo=express&logoCol - or=white) - ![Symfony](https://img.shields.io/badge/-Symfony-000000?style=for-the-badge&logo=symfony&logoColor=whi - te) - ![Flutter](https://img.shields.io/badge/-Flutter-02569B?style=for-the-badge&logo=flutter&logoColor=whi - te) - ![FastAPI](https://img.shields.io/badge/-FastAPI-009688?style=for-the-badge&logo=fastapi&logoColor=whi - te) - ![GraphQL](https://img.shields.io/badge/-GraphQL-E10098?style=for-the-badge&logo=graphql&logoColor=whi - te) - ![TailwindCSS](https://img.shields.io/badge/-TailwindCSS-06B6D4?style=for-the-badge&logo=tailwindcss&l - ogoColor=white) - ![Bootstrap](https://img.shields.io/badge/-Bootstrap-7952B3?style=for-the-badge&logo=bootstrap&logoCol - or=white) - - ### 🗄️ Bases de données - - ![MariaDB](https://img.shields.io/badge/-MariaDB-003545?style=for-the-badge&logo=mariadb&logoColor=whi - te) - ![MySQL](https://img.shields.io/badge/-MySQL-4479A1?style=for-the-badge&logo=mysql&logoColor=white) - ![SQL Server](https://img.shields.io/badge/-SQL%20Server-CC2927?style=for-the-badge&logoColor=white) - ![PostgreSQL](https://img.shields.io/badge/-PostgreSQL-4169E1?style=for-the-badge&logo=postgresql&logo - Color=white) - ![SQLite](https://img.shields.io/badge/-SQLite-003B57?style=for-the-badge&logo=sqlite&logoColor=white) - ![MongoDB](https://img.shields.io/badge/-MongoDB-47A248?style=for-the-badge&logo=mongodb&logoColor=whi - te) - ![Redis](https://img.shields.io/badge/-Redis-DC382D?style=for-the-badge&logo=redis&logoColor=white) - - ### ☁️ Cloud & Infrastructure - - ![AWS](https://img.shields.io/badge/-AWS-232F3E?style=for-the-badge&logo=amazonwebservices&logoColor=w - hite) - ![Azure](https://img.shields.io/badge/-Azure-0078D4?style=for-the-badge&logoColor=white) - ![Terraform](https://img.shields.io/badge/-Terraform-7B42BC?style=for-the-badge&logo=terraform&logoCol - or=white) - ![AWS Lambda](https://img.shields.io/badge/-AWS%20Lambda-FF9900?style=for-the-badge&logo=awslambda&log - oColor=white) - ![Amazon ECS](https://img.shields.io/badge/-Amazon%20ECS-FF9900?style=for-the-badge&logo=amazonecs&log - oColor=white) - ![Firebase](https://img.shields.io/badge/-Firebase-FFCA28?style=for-the-badge&logo=firebase&logoColor= - black) - - ### 🧰 Outils & DevOps - - ![Git](https://img.shields.io/badge/-Git-F05032?style=for-the-badge&logo=git&logoColor=white) - ![Gitea](https://img.shields.io/badge/-Gitea-609926?style=for-the-badge&logo=gitea&logoColor=white) - ![GitLab](https://img.shields.io/badge/-GitLab-FC6D26?style=for-the-badge&logo=gitlab&logoColor=white) - ![Docker](https://img.shields.io/badge/-Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white) - ![CI/CD](https://img.shields.io/badge/-CI%2FCD-2088FF?style=for-the-badge&logo=githubactions&logoColor - =white) - ![Plesk](https://img.shields.io/badge/-Plesk-52BBE6?style=for-the-badge&logo=plesk&logoColor=white) - ![Postman](https://img.shields.io/badge/-Postman-FF6C37?style=for-the-badge&logo=postman&logoColor=whi - te) - ![Swagger](https://img.shields.io/badge/-Swagger-85EA2D?style=for-the-badge&logo=swagger&logoColor=bla - ck) - ![JWT](https://img.shields.io/badge/-JWT-000000?style=for-the-badge&logo=jsonwebtokens&logoColor=white - ) - ![OAuth2](https://img.shields.io/badge/-OAuth2-3EAAAF?style=for-the-badge&logo=auth0&logoColor=white) - ![Stripe](https://img.shields.io/badge/-Stripe-635BFF?style=for-the-badge&logo=stripe&logoColor=white) - ![Jest](https://img.shields.io/badge/-Jest-C21325?style=for-the-badge&logo=jest&logoColor=white) - ![Vitest](https://img.shields.io/badge/-Vitest-6E9F18?style=for-the-badge&logo=vitest&logoColor=white) - - ### 🖥️ IDE & Éditeurs - - ![PhpStorm](https://img.shields.io/badge/-PhpStorm-000000?style=for-the-badge&logo=phpstorm&logoColor= - white) - ![WebStorm](https://img.shields.io/badge/-WebStorm-000000?style=for-the-badge&logo=webstorm&logoColor= - white) - ![PyCharm](https://img.shields.io/badge/-PyCharm-000000?style=for-the-badge&logo=pycharm&logoColor=whi - te) - ![Eclipse](https://img.shields.io/badge/-Eclipse-2C2255?style=for-the-badge&logo=eclipseide&logoColor= - white) - ![VS Code](https://img.shields.io/badge/-VS%20Code-007ACC?style=for-the-badge&logoColor=white) - ![Android Studio](https://img.shields.io/badge/-Android%20Studio-3DDC84?style=for-the-badge&logo=andro - idstudio&logoColor=white) - ![Claude Code](https://img.shields.io/badge/-Claude%20Code-D97757?style=for-the-badge&logo=claude&logo - Color=white) - - ### 🧱 Serveurs & Réseaux - - ![NGINX](https://img.shields.io/badge/-NGINX-009639?style=for-the-badge&logo=nginx&logoColor=white) - ![Apache](https://img.shields.io/badge/-Apache-D22128?style=for-the-badge&logo=apache&logoColor=white) - - ### 💻 OS - - ![Windows](https://img.shields.io/badge/-Windows-0078D6?style=for-the-badge&logoColor=white) - ![macOS](https://img.shields.io/badge/-macOS-000000?style=for-the-badge&logo=macos&logoColor=white) - ![Debian](https://img.shields.io/badge/-Debian-A81D33?style=for-the-badge&logo=debian&logoColor=white) - ![Ubuntu](https://img.shields.io/badge/-Ubuntu-E95420?style=for-the-badge&logo=ubuntu&logoColor=white) - - --- - - ## 📫 Me contacter +🎧 Dév le jour, DJ la nuit +💻 Développeur fullstack passionné par les technos modernes +🚀 J'aime créer des expériences web performantes, propres et scalables - Tu veux collaborer ? Juste discuter ? - - - ✉️ **Email** : leroyjohan3@gmail.com - - 🌐 **Site web / Portfolio** : [johanleroy.fr](https://johanleroy.fr) - - --- - - > _"Code propre, sono sale." — Johan_ 🎶 \ No newline at end of file +--- + +## 🧠 À propos de moi + +- 🔭 Je bosse sur des projets en **NestJS 11**, **Nuxt 3**, **Next.js 16**, **Vue 3**, **MariaDB**, **TailwindCSS 4** +- ⚙️ Stack préférée : `NestJS` + `Nuxt` / `Next.js` + `TypeORM` + `MariaDB` + `Tailwind` +- ☁️ Infra AWS (ECS, Lambda, RDS, CloudFront, SES) pilotée en **Terraform** +- 🛠️ Reverse proxy & hébergement : `NGINX`, `Apache`, `Plesk` +- 🔐 Auth : `JWT` access+refresh, `OAuth2 PKCE`, cookies httpOnly, chiffrement AES-256-GCM +- 📨 Queues & temps réel : `BullMQ`, `Redis`, `Socket.IO`, `SQS` +- 🧩 J'aime structurer mes projets avec des archis propres (Strategy/Adapter, services découplés) +- 🎨 Fan de UI bien léchée : design systems glass, dark/light mode, animations douces, UX fluide +- 🎵 DJ & passionné de tekno, mes projets web ont parfois un petit beat qui groove 😎 + +--- + +## 🛠️ Technologies & Outils + +### 🧑‍💻 Langages + +![Java](https://img.shields.io/badge/-Java-007396?style=for-the-badge&logo=openjdk&logoColor=white) +![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=for-the-badge&logo=javascript&logoColor=black) +![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white) +![Python](https://img.shields.io/badge/-Python-3776AB?style=for-the-badge&logo=python&logoColor=white) +![PHP](https://img.shields.io/badge/-PHP-777BB4?style=for-the-badge&logo=php&logoColor=white) +![C#](https://img.shields.io/badge/-C%23-239120?style=for-the-badge&logo=dotnet&logoColor=white) +![C++](https://img.shields.io/badge/-C++-00599C?style=for-the-badge&logo=cplusplus&logoColor=white) +![Dart](https://img.shields.io/badge/-Dart-0175C2?style=for-the-badge&logo=dart&logoColor=white) +![Kotlin](https://img.shields.io/badge/-Kotlin-7F52FF?style=for-the-badge&logo=kotlin&logoColor=white) + +### 🧩 Frameworks & Libraries + +![NestJS](https://img.shields.io/badge/-NestJS-E0234E?style=for-the-badge&logo=nestjs&logoColor=white) +![Next.js](https://img.shields.io/badge/-Next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white) +![React](https://img.shields.io/badge/-React-61DAFB?style=for-the-badge&logo=react&logoColor=black) +![Vue.js](https://img.shields.io/badge/-Vue.js-4FC08D?style=for-the-badge&logo=vuedotjs&logoColor=white) +![Nuxt](https://img.shields.io/badge/-Nuxt-00DC82?style=for-the-badge&logo=nuxt&logoColor=white) +![Angular](https://img.shields.io/badge/-Angular-DD0031?style=for-the-badge&logo=angular&logoColor=white) +![Vite](https://img.shields.io/badge/-Vite-646CFF?style=for-the-badge&logo=vite&logoColor=white) +![Pinia](https://img.shields.io/badge/-Pinia-FFD859?style=for-the-badge&logoColor=black) +![Socket.IO](https://img.shields.io/badge/-Socket.IO-010101?style=for-the-badge&logo=socketdotio&logoColor=white) +![Vuetify](https://img.shields.io/badge/-Vuetify-1867C0?style=for-the-badge&logo=vuetify&logoColor=white) +![shadcn/ui](https://img.shields.io/badge/-shadcn%2Fui-000000?style=for-the-badge&logo=shadcnui&logoColor=white) +![Spring](https://img.shields.io/badge/-Spring-6DB33F?style=for-the-badge&logo=spring&logoColor=white) +![Express.js](https://img.shields.io/badge/-Express.js-000000?style=for-the-badge&logo=express&logoColor=white) +![Symfony](https://img.shields.io/badge/-Symfony-000000?style=for-the-badge&logo=symfony&logoColor=white) +![Flutter](https://img.shields.io/badge/-Flutter-02569B?style=for-the-badge&logo=flutter&logoColor=white) +![FastAPI](https://img.shields.io/badge/-FastAPI-009688?style=for-the-badge&logo=fastapi&logoColor=white) +![GraphQL](https://img.shields.io/badge/-GraphQL-E10098?style=for-the-badge&logo=graphql&logoColor=white) +![TailwindCSS](https://img.shields.io/badge/-TailwindCSS-06B6D4?style=for-the-badge&logo=tailwindcss&logoColor=white) +![Bootstrap](https://img.shields.io/badge/-Bootstrap-7952B3?style=for-the-badge&logo=bootstrap&logoColor=white) + +### 🗄️ Bases de données + +![MariaDB](https://img.shields.io/badge/-MariaDB-003545?style=for-the-badge&logo=mariadb&logoColor=white) +![MySQL](https://img.shields.io/badge/-MySQL-4479A1?style=for-the-badge&logo=mysql&logoColor=white) +![SQL Server](https://img.shields.io/badge/-SQL%20Server-CC2927?style=for-the-badge&logoColor=white) +![PostgreSQL](https://img.shields.io/badge/-PostgreSQL-4169E1?style=for-the-badge&logo=postgresql&logoColor=white) +![SQLite](https://img.shields.io/badge/-SQLite-003B57?style=for-the-badge&logo=sqlite&logoColor=white) +![MongoDB](https://img.shields.io/badge/-MongoDB-47A248?style=for-the-badge&logo=mongodb&logoColor=white) +![Redis](https://img.shields.io/badge/-Redis-DC382D?style=for-the-badge&logo=redis&logoColor=white) + +### ☁️ Cloud & Infrastructure + +![AWS](https://img.shields.io/badge/-AWS-232F3E?style=for-the-badge&logo=amazonwebservices&logoColor=white) +![Azure](https://img.shields.io/badge/-Azure-0078D4?style=for-the-badge&logoColor=white) +![Terraform](https://img.shields.io/badge/-Terraform-7B42BC?style=for-the-badge&logo=terraform&logoColor=white) +![AWS Lambda](https://img.shields.io/badge/-AWS%20Lambda-FF9900?style=for-the-badge&logo=awslambda&logoColor=white) +![Amazon ECS](https://img.shields.io/badge/-Amazon%20ECS-FF9900?style=for-the-badge&logo=amazonecs&logoColor=white) +![Firebase](https://img.shields.io/badge/-Firebase-FFCA28?style=for-the-badge&logo=firebase&logoColor=black) + +### 🧰 Outils & DevOps + +![Git](https://img.shields.io/badge/-Git-F05032?style=for-the-badge&logo=git&logoColor=white) +![Gitea](https://img.shields.io/badge/-Gitea-609926?style=for-the-badge&logo=gitea&logoColor=white) +![GitLab](https://img.shields.io/badge/-GitLab-FC6D26?style=for-the-badge&logo=gitlab&logoColor=white) +![Docker](https://img.shields.io/badge/-Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white) +![CI/CD](https://img.shields.io/badge/-CI%2FCD-2088FF?style=for-the-badge&logo=githubactions&logoColor=white) +![Plesk](https://img.shields.io/badge/-Plesk-52BBE6?style=for-the-badge&logo=plesk&logoColor=white) +![Postman](https://img.shields.io/badge/-Postman-FF6C37?style=for-the-badge&logo=postman&logoColor=white) +![Swagger](https://img.shields.io/badge/-Swagger-85EA2D?style=for-the-badge&logo=swagger&logoColor=black) +![JWT](https://img.shields.io/badge/-JWT-000000?style=for-the-badge&logo=jsonwebtokens&logoColor=white) +![OAuth2](https://img.shields.io/badge/-OAuth2-3EAAAF?style=for-the-badge&logo=auth0&logoColor=white) +![Stripe](https://img.shields.io/badge/-Stripe-635BFF?style=for-the-badge&logo=stripe&logoColor=white) +![Jest](https://img.shields.io/badge/-Jest-C21325?style=for-the-badge&logo=jest&logoColor=white) +![Vitest](https://img.shields.io/badge/-Vitest-6E9F18?style=for-the-badge&logo=vitest&logoColor=white) + +### 🖥️ IDE & Éditeurs + +![PhpStorm](https://img.shields.io/badge/-PhpStorm-000000?style=for-the-badge&logo=phpstorm&logoColor=white) +![WebStorm](https://img.shields.io/badge/-WebStorm-000000?style=for-the-badge&logo=webstorm&logoColor=white) +![PyCharm](https://img.shields.io/badge/-PyCharm-000000?style=for-the-badge&logo=pycharm&logoColor=white) +![Eclipse](https://img.shields.io/badge/-Eclipse-2C2255?style=for-the-badge&logo=eclipseide&logoColor=white) +![VS Code](https://img.shields.io/badge/-VS%20Code-007ACC?style=for-the-badge&logoColor=white) +![Android Studio](https://img.shields.io/badge/-Android%20Studio-3DDC84?style=for-the-badge&logo=androidstudio&logoColor=white) +![Claude Code](https://img.shields.io/badge/-Claude%20Code-D97757?style=for-the-badge&logo=claude&logoColor=white) + +### 🧱 Serveurs & Réseaux + +![NGINX](https://img.shields.io/badge/-NGINX-009639?style=for-the-badge&logo=nginx&logoColor=white) +![Apache](https://img.shields.io/badge/-Apache-D22128?style=for-the-badge&logo=apache&logoColor=white) + +### 💻 OS + +![Windows](https://img.shields.io/badge/-Windows-0078D6?style=for-the-badge&logoColor=white) +![macOS](https://img.shields.io/badge/-macOS-000000?style=for-the-badge&logo=macos&logoColor=white) +![Debian](https://img.shields.io/badge/-Debian-A81D33?style=for-the-badge&logo=debian&logoColor=white) +![Ubuntu](https://img.shields.io/badge/-Ubuntu-E95420?style=for-the-badge&logo=ubuntu&logoColor=white) + +--- + +## 📫 Me contacter + +Tu veux collaborer ? Juste discuter ? + +- ✉️ **Email** : leroyjohan3@gmail.com +- 🌐 **Site web / Portfolio** : [johanleroy.fr](https://johanleroy.fr) + +--- + +> _"Code propre, sono sale." — Johan_ 🎶