← Retour à l’accueil

Projets

Projets personnels 8

Applications et outils que je développe sur mon temps libre, pour apprendre ou répondre à un besoin concret.

▣

Agenda partagé

React / TypeScript / NestJS / TypeORM

Application d’agenda collaboratif : chaque utilisateur gère ses événements, partage son calendrier et invite d’autres personnes à ses événements.

Stack & outils React TypeScript React Router Axios NestJS TypeORM SQLite JWT Passport bcrypt class-validator
Mes interventions
  • Front-end React + TypeScript : vue calendrier, formulaire d’événement, centre de notifications et routes protégées
  • API NestJS en modules : authentification, événements, partages de calendrier et invitations, y compris groupées
  • Inscription, connexion et changement de mot de passe : JWT avec Passport, mots de passe hachés avec bcrypt
  • Persistance avec TypeORM sur SQLite
Sécurité · OWASP
  • A01 Contrôle d’accès défaillant : Un utilisateur ne peut modifier que ses propres partages et n’accepte que ceux qui lui sont destinés
  • A05 Injection : Données reçues validées par des DTO class-validator (ValidationPipe)
  • A07 Défaillances d’authentification : Mots de passe hachés avec bcrypt, ancien mot de passe vérifié avant tout changement

Enjeu : Organiser un emploi du temps à plusieurs, avec des droits de partage clairs.

▣

Job Bot — veille d’offres d’emploi

TypeScript / Playwright / Prisma / CRON

Outil personnel qui collecte chaque jour les offres d’emploi de plusieurs sites, les filtre selon mon profil et m’envoie une synthèse par e-mail.

Stack & outils TypeScript Node.js Playwright Prisma SQLite node-cron Nodemailer Zod
Mes interventions
  • Collecte multi-sources : API France Travail et Adzuna, Indeed, HelloWork et Remotive (Playwright pour les pages web)
  • Filtrage par niveau et localisation, score de compatibilité avec mon profil, page de consultation filtrable
  • Exécution planifiée par CRON, stockage Prisma, notification par e-mail et tests unitaires
Tests
  • Unitaires Calcul du score de compatibilité et classement des offres par distance, avec le runner natif de Node.js
  • Réponses d’API simulées Normalisation des réponses Apify et SerpAPI, et extraction des offres HelloWork (JSON Next.js) et Indeed (JSON-LD) à partir de données simulées, sans appel réseau

Enjeu : Automatiser une recherche répétitive et ne garder que les offres vraiment pertinentes.

▣ ↗

GestaColoc

Node.js / Express / React / PostgreSQL

Application de gestion de colocation inspirée de Tricount : dépenses partagées, factures communes, tâches ménagères et invités, avec une interface pensée pour le mobile.

Stack & outils Node.js Express React Vite PostgreSQL Docker
Mes interventions
  • API REST Express : authentification, groupes, dépenses, factures communes, tâches, invités et désaccords
  • Interface React + Vite mobile-first : soldes, tâches et profil de chaque colocataire, panneau d’administration
  • Base PostgreSQL dans un conteneur Docker, schéma et données de démonstration créés au démarrage

Enjeu : Simplifier le partage des dépenses et l’organisation de la vie en colocation.

▣

Ce portfolio

Symfony 7.4 / Twig / PHPUnit / VPS

Le site que vous consultez : une application Symfony déployée sur un VPS OVH que j’administre.

Stack & outils PHP 8.2 Symfony 7.4 Twig AssetMapper PHPUnit GitHub Actions Nginx Let’s Encrypt
Mes interventions
  • Contenu structuré dans le contrôleur et rendu avec Twig, styles CSS écrits à la main
  • Tests fonctionnels PHPUnit qui vérifient chaque section de la page
  • Pipeline GitHub Actions : tests, puis audit des CVE des dépendances PHP et JavaScript à chaque push et chaque semaine ; une faille connue bloque la mise en production
  • Déploiement automatique sur VPS : Nginx, PHP-FPM et certificat HTTPS Let’s Encrypt
Tests
  • Fonctionnels PHPUnit (WebTestCase) : chaque page est appelée en HTTP et son contenu vérifié, y compris la réponse 404 d’une catégorie inconnue
  • Intégration continue Tests exécutés par GitHub Actions à chaque push : un échec bloque le déploiement
Sécurité · OWASP
  • A02 Mauvaise configuration de sécurité : Production sans mode debug, secret généré sur le serveur et vérification que le profiler Symfony n’est pas exposé
  • A03 Chaîne d’approvisionnement logicielle : Audit des CVE des dépendances PHP et JavaScript en CI, qui bloque la mise en production
  • A04 Défaillances cryptographiques : HTTPS avec certificat Let’s Encrypt sur le VPS
  • A05 Injection : Échappement automatique des sorties Twig contre le XSS

Enjeu : Présenter mon parcours avec la même exigence de qualité que mes projets.

▣

Site CV administrable

Symfony / Doctrine / GitHub Actions

Site personnel en Symfony dont le contenu (compétences, expériences, formations) se gère depuis un espace d’administration protégé.

Stack & outils PHP Symfony Doctrine Twig Security Bootstrap GitHub Actions
Mes interventions
  • Entités Doctrine pour les compétences, expériences, formations et utilisateurs
  • Inscription, connexion et espace d’administration avec Symfony Security
  • Déploiement automatique sur VPS par GitHub Actions via SSH
Sécurité · OWASP
  • A01 Contrôle d’accès défaillant : Espace d’administration réservé aux utilisateurs connectés avec Symfony Security

Enjeu : Mettre à jour son CV en ligne sans toucher au code.

▣

Carnet d’adresses

Symfony / Doctrine / Authentification

Application Symfony de gestion de contacts, accessible après inscription et connexion.

Stack & outils PHP Symfony Doctrine Twig Security EasyAdmin
Mes interventions
  • Entités Doctrine Contact et Utilisateur, logique métier isolée dans un service
  • Création, modification et suppression des contacts ; inscription et connexion avec Symfony Security
  • Import de contacts depuis un fichier CSV par une commande Symfony, et export CSV

Enjeu : Maîtriser le cycle complet d’une application Symfony sécurisée.

▣

Studio de la Tanière

Next.js / React / MySQL / Site vitrine

Site vitrine d’une maison d’édition : présentation du studio, catalogue de livres, page d’achat, contact et mentions légales.

Stack & outils Next.js React JavaScript MySQL CSS Modules
Mes interventions
  • Pages construites avec l’App Router de Next.js et des CSS Modules
  • Catalogue des ouvrages avec une page dédiée par livre
  • Préparation du back-end avec une base MySQL

Enjeu : Donner une vitrine moderne et rapide à une petite maison d’édition.

▣ ↗

Hackathon Pôle emploi — Trouve ton festival

Next.js / TypeScript / NestJS / Open data

Hackathon organisé par Pôle emploi les 12 et 13 octobre 2023 : en équipe, nous avons conçu une application grand public qui exploite le jeu de données ouvert des festivals en France (data.gouv.fr).

Stack & outils Next.js TypeScript NestJS Prisma Tailwind CSS Open data
Mes interventions
  • Front-end Next.js / TypeScript : page de détail d’un festival avec routage dynamique par identifiant
  • Ajout d’un événement depuis l’interface, relié à l’API NestJS
  • Préparation en amont des briques communes : profil utilisateur et upload d’image

Enjeu : Livrer en deux jours une application qui rend des données publiques utiles au grand public.