Huitivi
Huitivi, présenté à l’utilisateur sous le nom de Miadenou, est un prototype d’application d’annonces immobilières pour le Togo, qui permet de chercher un bien à vendre ou à louer selon le lieu, le type, le budget et quelques critères, puis de contacter l’opérateur.
- Rôle
- Auteur unique de l’API et de l’application
- Période
- Février et mars 2025
- État
- Prototype. Prototype, version 0.0.1
- Technologies
- Django 4.2, Django REST Framework, PostgreSQL 15, Flutter, Google Maps
- Dépôts
- Deux
Contexte
L’application s’adresse à une personne qui cherche un logement, un bureau, un commerce ou un terrain au Togo. Elle compose sa recherche en quelques écrans, consulte les résultats en liste ou sur une carte, conserve des favoris, puis contacte l’opérateur par téléphone, par SMS ou par WhatsApp. Les annonces sont saisies par l’opérateur dans l’administration de Django, l’application ne proposant pas de formulaire de dépôt.
Le projet représente quatre semaines de travail, en février et en mars 2025, et il n’a pas été poursuivi depuis. Il s’agit donc d’un prototype.
Problème
Une recherche immobilière porte d’abord sur un lieu, et l’utilisateur attend qu’un bien situé à quelques kilomètres de l’endroit qu’il a nommé lui soit proposé. Une recherche par rayon suppose d’ordinaire une base de données spatiale, que le prototype ne justifiait pas d’installer. Le modèle prévoit par ailleurs de réserver les visites virtuelles à ceux qui les ont achetées, tout en signalant leur existence à tous.
Réponse apportée
Une recherche en un seul document
Les six écrans de recherche, qui portent sur la transaction, le type de bien, les lieux, la surface, le budget et les critères, remplissent un même document de filtres, que l’application envoie à un seul point d’accès. Chaque champ y est facultatif, et le serveur applique tour à tour ceux qu’il reçoit. La dernière recherche et ses résultats sont conservés sur le téléphone, si bien qu’ils sont retrouvés à la réouverture de l’application.
Un rayon sans base spatiale
L’application résout chaque lieu choisi en coordonnées et les joint à la recherche. Le serveur filtre d’abord en SQL sur les autres critères, puis ne retient que les annonces situées à moins de dix kilomètres de l’un des lieux, en calculant la distance géodésique en Python et en passant à l’annonce suivante dès qu’un lieu convient.
for listing in listings:
geolocation = listing.geolocation
latitude = geolocation.lat
longitude = geolocation.lon
for location in locations:
location_latitude = location['latitude']
location_longitude = location['longitude']
distance = geodesic((latitude, longitude),
(location_latitude, location_longitude)).kilometers
if distance <= 10:
result.append(listing)
break
listings = resultDes médias à trois niveaux
Les photographies, les vues panoramiques à 360 degrés et les vidéos sont trois tables distinctes. L’API indique toujours si une annonce possède une vue panoramique ou une vidéo, mais n’en transmet les adresses qu’à l’utilisateur qui détient l’abonnement correspondant. L’application peut ainsi afficher une vignette verrouillée sans jamais recevoir ce qu’elle protège.
Limites et perspectives
Le calcul des distances en Python, de même que le tri au prix par mètre carré, convient à quelques dizaines d’annonces et non à quelques milliers ; une base spatiale deviendrait nécessaire bien avant ce seuil. Le rayon de dix kilomètres est fixé dans le code et la recherche n’est pas paginée.
L’achat d’une visite virtuelle n’est par ailleurs qu’une maquette : la feuille de paiement n’est reliée à aucun prestataire, et un abonnement ne peut être créé que dans l’administration. La vidéo ne dispose pas encore de lecteur. Le prototype ne comporte enfin aucun test, et il n’a pas été publié sur les magasins d’applications.



