Rentilot – SaaS gestion locative (Laravel/PHP)
Le Challenge
Concevoir Rentilot, un SaaS de gestion locative en Laravel/PHP, avec une exigence forte de fiabilité et de performance.
Côté produit : génération de documents (quittances, baux) en PDF, suivi des loyers, paiements et impayés, relances, historique, exports et évolutions vers des modules plus avancés (reporting/finance, indexation IRL, automatisations).
Côté technique : maintenir une UX simple et rapide avec des temps de réponse bas, malgré une logique métier dense et des écrans “data-heavy”. Éviter les pièges classiques qui font exploser la latence (N+1, pages qui déclenchent trop de requêtes, agrégations SQL coûteuses, endpoints surchargés) et construire une base maintenable capable d’évoluer sans dette.
La Solution Technique
Mise en place d’un socle Laravel/PHP orienté métier : séparation claire de la logique (services), événements, API et pipeline de traitement.
Externalisation des tâches lourdes via queues/jobs (génération de PDF, calculs, relances, synchronisations) pour préserver le cycle HTTP et garder un TTFB bas.
Travail systématique sur la performance : instrumentation et audit des requêtes, réduction du nombre de queries par page, optimisation des accès données, index MySQL, pagination et stratégies de cache ciblées (ex: Redis) pour les calculs et vues “hot”.
Ajout d’observabilité (requêtes lentes, endpoints, métriques) afin d’identifier rapidement les points chauds et itérer en continu, avec une approche directement transposable à des missions WordPress performance (analyse, réduction des requêtes, caching).
Laravel
SaaS Laravel / PHP
- Performance backend (TTFB, N+1, réduction des requêtes, profiling)
- MySQL (optimisation SQL, index, pagination, agrégations)
- Cache Redis / stratégies de caching
- Queues/Jobs (asynchrone, emails, génération PDF)
- Génération de documents PDF (quittances, baux)
- API & intégrations
- Observabilité (slow queries, logs, monitoring)
- Méthode “chirurgie performance” applicable à WordPress (WP_Query/meta_query, autoload options, object cache)