Construire un side project Django + React en solo : le cas Housing AI
Construire un side project en solo : la V1 sur-conçue jetée après 3 semaines, le pivot livré en 7 jours, la stack Django + React à 20 $ par mois et mes 3 erreurs.
Il y a quelques mois, je cherchais un appartement à Montréal. Comme tout le monde, j'ai ouvert Kijiji, LogisQuebec, Locatio, LogÉtudes, et j'ai passé des heures à jongler entre les onglets.
C'est là que l'idée m'est venue : pourquoi personne n'a créé un agrégateur qui combine toutes ces sources ?
Housing AI existe maintenant. Voici comment j'ai construit ce side project en solo avec Django et React, les erreurs que j'ai faites, et ce que j'aurais aimé savoir avant de commencer.
Sur les chiffres de cet article. Tous les volumes, coûts et pourcentages cités viennent de mes propres tableaux de bord (Railway, Vercel, analytics du site) relevés début 2026. Ce sont mes données d'exploitation, pas des données de marché : elles décrivent un projet, pas un secteur.
Le problème que je voulais résoudre
La recherche de logement au Québec est fragmentée. Chaque plateforme a ses annonces exclusives :
- Kijiji : le plus gros volume, mais beaucoup de bruit
- LogisQuebec : annonces de particuliers
- Locatio : focus sur Montréal
- LogÉtudes : logements étudiants
Pour trouver le bon appartement, il faut vérifier 4 à 5 sites plusieurs fois par jour. C'est épuisant.
Mon hypothèse : en combinant toutes ces sources en une seule recherche, je gagne du temps et je ne rate aucune opportunité.
Pourquoi ma première version de side project était mauvaise
Ma première approche était typique d'un développeur : de la sur-conception, du début à la fin.
J'ai voulu construire :
- Un système de scraping distribué avec Celery
- Une base de données normalisée parfaite
- Un algorithme de déduplication en machine learning
- Une interface React ultra-sophistiquée
Résultat ? Après 3 semaines, j'avais un système complexe qui ne marchait pas vraiment. Les scrapers cassaient constamment, la déduplication était approximative, et l'interface était moche.
Leçon apprise : j'aurais dû commencer par la version la plus simple possible. C'est exactement le sujet de mon article sur comment créer un MVP rapidement.
Le pivot vers la simplicité : une V2 livrée en 7 jours
J'ai tout jeté et recommencé avec une approche minimaliste :
- Un seul scraper simple qui tourne toutes les heures
- PostgreSQL basique, sans optimisation prématurée
- Interface React minimale, juste une liste avec des filtres
- Pas de machine learning, déduplication par URL uniquement
En une semaine, j'avais une version fonctionnelle. Pas jolie, pas parfaite, mais utilisable.
La stack technique d'un side project à 20 $ par mois
Voici ce que j'utilise aujourd'hui.
Backend :
- Django + Django REST Framework
- PostgreSQL (hébergé sur Railway)
- Celery pour les tâches asynchrones (scraping)
Frontend :
- React + TypeScript
- Tailwind CSS
- Déployé sur Vercel
Infrastructure :
- Railway pour le backend et la base de données
- Vercel pour le frontend
- GitHub Actions pour le CI/CD
Le coût total ? Environ 20 $ par mois pour tout faire tourner. Si le choix du framework backend vous intéresse, j'ai détaillé mon arbitrage dans Django vs FastAPI : mon retour d'expérience sur 15 APIs.
Ce qui a marché
Les alertes email
La fonctionnalité qui a eu le plus d'impact : les alertes personnalisées. Tu définis tes critères, et tu reçois un email dès qu'une nouvelle annonce correspond.
C'est simple, mais ça résout le vrai problème : ne plus avoir à vérifier manuellement.
La messagerie intégrée
J'ai ajouté un système de messagerie pour que locataires et propriétaires communiquent directement sur la plateforme.
Ça a créé un effet réseau : certains propriétaires postent désormais sur Housing AI plutôt que sur les autres plateformes.
Le SEO programmatique
Chaque recherche génère une page indexable. « Appartement 3 1/2 Plateau Mont-Royal » devient une landing page avec des résultats en temps réel. Ça m'apporte du trafic organique sans budget publicitaire, mais cette approche a aussi ses pièges, que je raconte dans SEO programmatique : mes erreurs à 50k$.
Les 3 erreurs qui m'ont coûté le plus de temps
1. Trop de fonctionnalités trop tôt
J'ai ajouté un système de favoris, des comparaisons, des statistiques de marché, avant même d'avoir des utilisateurs réguliers.
Ce que j'aurais dû faire : me concentrer sur le cœur du produit, recherche et alertes, jusqu'à avoir une centaine d'utilisateurs actifs.
2. Ignorer le mobile
Ma première version était pensée pour le bureau. Or, d'après mes propres analytics, environ 70 % de mes visiteurs sont sur mobile.
J'ai dû refaire l'interface en urgence quand j'ai vu ces chiffres.
3. Sous-estimer le support
Les utilisateurs posent beaucoup de questions. « Pourquoi cette annonce n'apparaît plus ? » « Comment modifier mes alertes ? »
J'ai dû créer une FAQ et automatiser certaines réponses.
Les chiffres actuels du projet
Après quelques mois, d'après mon tableau de bord interne :
| Indicateur | Valeur relevée | | --- | --- | | Annonces agrégées | plus de 500 | | Recherches par jour | plusieurs centaines | | Temps moyen sur le site | environ 4 minutes | | Coût d'infrastructure | environ 20 $ par mois |
Ce n'est pas encore rentable, mais la croissance est régulière.
Ce que j'aurais aimé savoir avant de me lancer
Lance plus tôt
Ma première version « parfaite » n'a jamais vu le jour. Ma version « nulle » a attiré mes premiers utilisateurs.
Le feedback réel vaut mieux que tes suppositions.
Le scraping, c'est fragile
Les sites changent leur structure régulièrement. J'ai dû réécrire mes scrapers plusieurs fois. Prévois du temps pour la maintenance, ce n'est pas une dépense ponctuelle.
Les utilisateurs ne lisent pas
J'ai passé des heures sur une page « Comment ça marche ». Personne ne la lit. Les gens veulent chercher, pas comprendre.
Rends l'interface intuitive plutôt que de l'expliquer.
La suite
Mes priorités pour les prochains mois :
- Monétisation : probablement un modèle freemium avec alertes premium
- Expansion : ajouter d'autres villes québécoises
- Marketplace : permettre aux propriétaires de poster directement
Conclusion
Construire Housing AI m'a appris plus que n'importe quel tutoriel. Les erreurs, les pivots, les petites victoires, c'est ça le vrai apprentissage.
Si tu as une idée de side project, mon conseil : commence cette semaine. Pas dans un mois quand tu auras « plus de temps ». Pas quand tu auras trouvé la stack parfaite.
Lance quelque chose de moche qui marche. Le reste suivra.
Tu cherches un logement au Québec ? Essaie Housing AI, toutes les annonces au même endroit.
Tags
A lire aussi
Créer un MVP rapidement : ce que j'aurais aimé savoir
Trois semaines sur une version « parfaite » jamais lancée, puis une semaine sur une version moche qui a trouvé ses premiers utilisateurs. Ce que j'ai appris sur le MVP : la fonctionnalité core, les raccourcis acceptables, ceux qui ne le sont pas, et la limite des deux semaines.
Ma formule pour estimer un projet web sans me planter
Un mandat « refonte simple » estimé à 40 heures qui en prend 122 : le genre de dépassement qui te fait travailler à 26 $ l'heure sans t'en rendre compte. Voici la formule d'estimation que j'applique depuis, avec multiplicateur par type de client et marges fixes pour les zones grises récurrentes.
Jongler avec 6 clients à la fois sans rien laisser tomber
Gérer six projets clients en solo sans échapper une démo ni brûler ses weekends tient à quatre habitudes simples : une revue du lundi, un canal unique par client, trois signaux d'alarme et un tableau de capacité honnête. Voici le système, et pourquoi il tue l'anxiété du dimanche soir.

