Projet personnel · étude de cas
PipeImmo : un SaaS conçu, construit et exploité seul. Puis arrêté proprement.
Un CRM pipeline pour agents immobiliers, du premier commit à la production en bêta ouverte : conception produit, architecture, paiements, conformité, exploitation. Arrêté volontairement, car un projet personnel n'a pas vocation à financer une infrastructure de production indéfiniment.
- Back
- .NET 10 · C#
- Front
- Angular 22 · PWA
- Données
- PostgreSQL 17
- Infra
- Docker · OVHcloud
- Services
- Stripe · SignalR
Tout ce qu'un agent fait au quotidien, sans rien oublier.
La stack la plus récente, des patterns éprouvés.
Clean Architecture et CQRS avec MediatR. Commandes en EF Core, lectures en Dapper. Un domaine riche sans aucune dépendance. Tests unitaires et d'intégration avec Testcontainers.
Deux flux, de bout en bout.
Zoom 1 · créer un deal
POST /api/deals → 201- 1Façade Angular, sans HttpClient exposé
- 2Endpoint Minimal API, délègue à MediatR
- 3Pipeline de validation FluentValidation
- 4Handler et domaine : Deal.Create()
- 5201 Created, signal front mis à jour
Zoom 2 · de l'inactivité à la relance, sans rien perdre
outbox transactionnel · au moins une fois- 1Service horaire : détecte les deals inactifs
- 2Point de sortie unique INotificationDispatcher
- 3In-app via SignalR, push via WebPush
- 4Email écrit en base, dans la même transaction
- 5OutboxProcessorService, toutes les 10 s
Sans outbox, une interruption du serveur perd les relances. Avec, la livraison est garantie au moins une fois.
Ce que ce projet démontre.
Un segment réel, un problème identifié, des arbitrages assumés.
Clean Architecture, CQRS et outbox appliqués en production.
Monitoring, sauvegardes, durcissement, RGPD, paiements, support.
Export des données, communication, décommissionnement.
Envie de voir le produit ?
L'application tourne en environnement de démo. Démo guidée sur demande, code et décisions à l'appui.