# Paul Richez — Développeur Fullstack Lille, France · 33 ans Email : pro@paulrichez.fr · GitHub : https://github.com/PaulRichez · Site : https://paulrichez.fr > Version lisible par IA (llms.txt) du portfolio https://paulrichez.fr — développeur fullstack Angular + Strapi, freelance, basé à Lille. --- # Parcours # Rewayz — Développeur Fullstack **2023 → aujourd'hui · [rewayz.com](https://rewayz.com)** - Lead développeur d'un SaaS B2B « copilote du manager » : architecture et décisions techniques de bout en bout - Fullstack Angular (front) + Strapi (back) : produit, API, provisioning SCIM, emails transactionnels - Intégration de l'IA : interface de chat et affichage du streaming temps réel # E-Mothep Consultants — Développeur **2020 → 2021 · [e-mothep.fr](https://e-mothep.fr)** - Intégration de flux et d'API via webMethods (middleware / ESB) - Développement de petits SaaS web : front Angular, back Firebase # JetDev — Ingénieur d'études web et multimédia **2019 → 2020 · [jetdev.fr](https://www.jetdev.fr)** - Développement d'une interface web avec Angular2+ - Utilisation de Java (Spring boot) et de AgGrid - Méthodologie agile # Elosi — Développeur **2017 → 2019 · [elosi.com](https://www.elosi.com)** - Développement front AngularJS puis Angular2+ (sites web et cockpits) - Intégration de flux et API REST via webMethods - Back-end : notions Java / Elasticsearch, Node.js, Firebase # CIM — Concepteur - Développeur **2014 → 2016 · [sa-cim.fr](https://www.sa-cim.fr)** - Correction et évolution d'un progiciel de gestion en Powerbuilder --- # Formation # 🎓 Université de Valenciennes **Licence Professionnelle Informatique de Gestion** 2012 → 2013 # 🎓 Lycée Henri Wallon, Valenciennes **BTS Informatique de Gestion Option Développeur d'Applications** 2010 → 2012 # 🎓 Lycée Paul Duez, Cambrai **Baccalauréat STI Option Génie Electrotechnique** 2009 → 2010 --- # Projets # Portfolio V2 ![Portfolio V2](assets/images/portfolio-v2.png) Ce portfolio, repensé comme un **éditeur de code façon VS Code** : explorateur de fichiers, onglets, thèmes clair/sombre, et un **assistant IA agentique** qui lit mes fichiers en direct via des *tool calls* (`read_file`, `open_file`) pour répondre et ouvrir les projets dans l'éditeur. Contenus générés depuis Strapi (système de fichiers virtuel), CV PDF généré à la volée. ## Stack Strapi · Zhipu AI · Docker ## Liens - [🔗 Démo](https://paulrichez.fr) - [💻 Code source](https://github.com/PaulRichez/portfolio-2) # Easygroupware ![Easygroupware](data:image/png;base64,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) Site web (frontEnd + backEnd) de type groupware avec gestion des mails, fichiers, contacts, calendrier. ## Stack Node.js · PostgreSQL · PrimeNG ## Liens - [🔗 Démo](https://demo-easygroupware.paulrichez.fr/) - [💻 Code source](https://github.com/PaulRichez/easygroupware) # Aimi — Assistant IA 100% navigateur ![Aimi — Assistant IA 100% navigateur](assets/images/aimi.jpg) ### Aimi — assistant IA privacy-first, 100% dans le navigateur Un assistant IA qui exécute des modèles de langage **directement dans le navigateur** (Transformers.js + ONNX), **sans aucun serveur** : les données ne quittent jamais la machine de l'utilisateur. - Moteur de chat en **web components vanilla** (zéro dépendance, ~10 kB gzip) - Providers LLM interchangeables (Transformers.js, Ollama, Anthropic, Gemini…) - **Fine-tuning LoRA** local du modèle (LFM2.5) pour spécialiser l'assistant - Monorepo **NX + pnpm**, application de chat **Angular 19** ## Stack Transformers.js · Angular ## Liens - [🔗 Démo](https://aimi.paulrichez.fr) # Plugin Strapi — Route Permission (v4) ![Plugin Strapi — Route Permission (v4)](assets/images/route-permission-v4.jpg) Plugin **Strapi 4** qui **synchronise automatiquement les permissions de rôles depuis la configuration des routes serveur** — plus besoin de les redéfinir à la main dans l'admin à chaque déploiement. ## Liens - [💻 Code source](https://github.com/PaulRichez/strapi4-plugin-route-permission) - [📦 npm](https://www.npmjs.com/package/strapi-plugin-server-route-permission) # Plugin Strapi — Route Permission (v5) ![Plugin Strapi — Route Permission (v5)](assets/images/route-permission-v5.jpg) Version **Strapi 5** de mon plugin Route Permission : synchronisation automatique des permissions de rôles depuis la configuration des routes serveur. **Migré moi-même depuis la v4** en suivant les breaking changes de Strapi 5. ## Liens - [💻 Code source](https://github.com/PaulRichez/strapi5-plugin-route-permission) - [📦 npm](https://www.npmjs.com/package/strapi5-plugin-route-permission) # Plugin Strapi — Upload Permission ![Plugin Strapi — Upload Permission](data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20600%22%20role%3D%22img%22%20aria-label%3D%22Upload%20Permission%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22g%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%221%22%3E%3Cstop%20offset%3D%220%22%20stop-color%3D%22rgb(108%2C92%2C231)%22%2F%3E%3Cstop%20offset%3D%221%22%20stop-color%3D%22rgb(74%2C69%2C255)%22%2F%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Crect%20width%3D%221200%22%20height%3D%22600%22%20fill%3D%22rgb(10%2C9%2C16)%22%2F%3E%3Ccircle%20cx%3D%221010%22%20cy%3D%2270%22%20r%3D%22300%22%20fill%3D%22url(%23g)%22%20opacity%3D%220.30%22%2F%3E%3Ccircle%20cx%3D%22150%22%20cy%3D%22560%22%20r%3D%22220%22%20fill%3D%22url(%23g)%22%20opacity%3D%220.16%22%2F%3E%3Ctext%20x%3D%2280%22%20y%3D%22300%22%20font-family%3D%22Segoe%20UI%2C%20Roboto%2C%20Arial%2C%20sans-serif%22%20font-size%3D%2298%22%20font-weight%3D%22800%22%20fill%3D%22rgb(255%2C255%2C255)%22%3EUpload%20Permission%3C%2Ftext%3E%3Ctext%20x%3D%2284%22%20y%3D%22362%22%20font-family%3D%22Segoe%20UI%2C%20Roboto%2C%20Arial%2C%20sans-serif%22%20font-size%3D%2233%22%20fill%3D%22rgba(255%2C255%2C255%2C0.72)%22%3EPlugin%20Strapi%20%C2%B7%20s%C3%A9curise%20les%20fichiers%3C%2Ftext%3E%3C%2Fsvg%3E) Plugin **Strapi 4** qui **sécurise la route publique de téléchargement des fichiers** : il ajoute un contrôle de permissions sur l'accès aux médias, normalement ouvert par défaut dans Strapi. ## Liens - [💻 Code source](https://github.com/PaulRichez/strapi-upload-permission) - [📦 npm](https://www.npmjs.com/package/strapi-upload-permission) # Strapi Models Relation Diagram ![Strapi Models Relation Diagram](assets/images/models-relation-diagram.jpg) Plugin **Strapi 4** qui **génère un diagramme entité-relation** de vos collections et composants (champs + relations), directement dans l'admin Strapi. Affichage personnalisable : visibilité des éléments, mise en page, style des liens. ## Liens - [💻 Code source](https://github.com/PaulRichez/models-relation-diagram) - [📦 npm](https://www.npmjs.com/package/strapi4-models-relation-diagram) # EasyTerminal ![EasyTerminal](data:image/png;base64,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) Un simple terminal écrit en vanilla JS sans aucune dépendance. ## Liens - [🔗 Démo](https://easy-terminal.vercel.app/) - [💻 Code source](https://github.com/PaulRichez/easy-terminal) - [📦 npm](https://www.npmjs.com/package/easy-terminal) # My Website ![My Website](data:image/png;base64,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) Un de mes premiers portfolios, réalisé en vue3. ## Stack HTML · CSS ## Liens - [💻 Code source](https://github.com/PaulRichez/MyAngVirtualCurriculumVitae) # Nebula — AI Analytics Landing ![Nebula — AI Analytics Landing](assets/images/nebula.jpg) ### Nebula — AI analytics platform (concept landing) A high-performance marketing landing page built with **Astro 4** and **Tailwind CSS**, shipping near-zero JavaScript. It features a hand-coded product dashboard mockup (SVG area & bar charts), a bento feature grid, scroll-reveal animations, a pointer-parallax hero glow and complete SEO / Open-Graph metadata. Built for a perfect-Lighthouse, static-first delivery. ## Stack Astro ## Liens - [🔗 Démo](https://api.paulrichez.fr/nebula/) - [💻 Code source](https://github.com/PaulRichez/portfolio-landing/tree/main/nebula-astro) https://api.paulrichez.fr/nebula/ # Lumina — Creative Studio Landing ![Lumina — Creative Studio Landing](assets/images/lumina.jpg) ### Lumina — creative studio (concept landing) An editorial landing page for a fictional design studio, built with **Next.js 14 (App Router)**, **React** and **Tailwind CSS**, exported as a fully static site. Bold oversized typography, an infinite marquee, animated project tiles, a pointer-following glow and accessible, reduced-motion-aware scroll reveals. ## Stack Next.js · React ## Liens - [🔗 Démo](https://api.paulrichez.fr/lumina/) - [💻 Code source](https://github.com/PaulRichez/portfolio-landing/tree/main/lumina-next) https://api.paulrichez.fr/lumina/ # ng-cursor ![ng-cursor](data:image/png;base64,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YuJffUV03TokQGtsxHXVVci54nnCnU081eQwjHgc3etFstmQPZ7j+8s0jbrbbsP7zDNIgFpZSc+33sI6eHC7TUNvv83eSZPQw2GQZUqfegrP9OnZPl3djqhiHYZktaKUlBz/cAAoCp5p01ALCwFIVlfjnz8/7aaOsWOxjxljtpN0ncCiReiBQLZPV7cjAtLF2M46C+eECW1GzONff91uO9nlwj15MpJiPkY18vHHRFasyHbxux0RkC5GUlU806ej5ucDkNi5E3/ruvSD5Ywfj23IEAD0SMQcOBRrRTqVCEgXZB89GueVV+6/iyxaRGLr1nbbqWVluFpH4SUgvGwZsS++yHbxuxURkC5IUlU806ahtLZ7Etu341+4MO22uddcs3+tSGNjmzliwrETAemi7GPG4Lz88tRdxL9wIYkdO9ptZzntNGxDh+77slsS27dnu+jdighIFyVZLHimT0dxm1+tnNiyxZxW0sqIx4l88AH1P/kJkZUrU+vm1YqKbBe9WxEPjuvCHGPH4rzsMvwvvYQE+OfPJ+fSS9Hq6/E99xzhd95B83r3h6OkBNfEidkudrciBgq7uPCyZeyZNAk9GARJQiktRff70cPhNk9bUXv0oPDBB/FMndrhB90JhyYC0sUZsRh1t96Kb/78tI8fsvTti2vSJNw/+AG24cOzXdxuR1SxujjJZqPooYcwNI3Qa6+hB4NIVivWwYPJvf56cq++Gku/ftkuZrcl7iAnCSMSIfrZZyR27EApLMQ+alRqerxw/IiACEIGoptXEDIQARGEDERABCEDERBByEAERBAyEAERhAxEQAQhAxEQQchABEQQMhABEYQMREAEIQMREEHIQAREEDIQARGEDERABCEDERBByEAERBAyEAERhAxEQAQhAxEQQchABEQQMhABEYQMREAEIQMREEHIQAREEDIQARGEDERABCGD/wPxKznWHBz8GwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0xMi0xOVQxNzozNDowNCswMDowMO34Uh4AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMTItMTlUMTc6MzQ6MDQrMDA6MDCcpeqiAAAAAElFTkSuQmCC) ### A simple Angular directive to choose the `cursor` CSS property This Angular directive allows you to dynamically set the CSS `cursor` property on any HTML element. By applying the directive with an input value, you can easily control the appearance of the mouse cursor (e.g. `pointer`, `default`, `help`, etc.) based on context or interaction needs. It’s lightweight, reusable, and integrates seamlessly with Angular templates. ## Liens - [🔗 Démo](https://lib-creator.vercel.app/ng-cursor) - [💻 Code source](https://github.com/PaulRichez/libCreator/tree/master/projects/paulrichez/ng-cursor) - [📦 npm](https://www.npmjs.com/package/ng-cursor) # animated sign pad ![animated sign pad](data:image/png;base64,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) Module tout-en-un pour dessiner et générer facilement des signatures animées. ## Stack JavaScript ## Liens - [💻 Code source](https://github.com/PaulRichez/animated-sign-pad) - [📦 npm](https://www.npmjs.com/package/animated-sign-pad) # Pulse — Fitness App Landing ![Pulse — Fitness App Landing](assets/images/pulse.jpg) ### Pulse — fitness app (concept landing) A product landing page for a fictional fitness coaching app, built with **Vue 3**, **Vite** and **Tailwind CSS**. Includes a fully hand-coded phone mockup with animated SVG activity rings, a custom `v-reveal` scroll directive, a bento feature grid and pricing — responsive from mobile to ultra-wide. ## Stack Vue.js · Vite · Tailwind CSS · TypeScript ## Liens - [🔗 Démo](https://api.paulrichez.fr/pulse/) - [💻 Code source](https://github.com/PaulRichez/portfolio-landing/tree/main/pulse-vue) https://api.paulrichez.fr/pulse/ # mini object path ![mini object path](data:image/png;base64,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) Une petite bibliothèque pour obtenir ou définir un objet via le chemin. ## Liens - [💻 Code source](https://github.com/PaulRichez/mini-object-path) - [📦 npm](https://www.npmjs.com/package/mini-object-path) --- # Compétences ```json { "frontend": [ "HTML", "CSS", "JavaScript", "Angular", "React", "Vue.js", "PrimeNG", "Nebular", "ECharts" ], "backend": [ "Strapi", "Node.js", "Java" ], "ai": [ "Transformers.js", "ONNX Runtime", "Zhipu AI" ], "tools": [ "PostgreSQL", "Docker" ], "legacy": [ "Webmethods", "Powerbuilder" ], "languages": { "français": "natif", "anglais": "notions" } } ``` --- # ✉️ Contact | Canal | Lien | |---|---| | Email | [pro@paulrichez.fr](mailto:pro@paulrichez.fr) | | GitHub | [github.com/PaulRichez](https://github.com/PaulRichez) | | Site | [paulrichez.fr](https://paulrichez.fr) | 📍 Lille