"Apartment for rent Almadies", "villa for sale Cocody Abidjan", "furnished studio Plateau Dakar" — these queries represent 180,000+ combined monthly Google searches. Yet most African agencies still operate via WhatsApp + word-of-mouth, missing 90% of the digital market.
TL;DR
- Listings portal + filters + pro photos = +250% mandate requests.
- 2026 stack: Next.js + Strapi + Algolia search + WhatsApp lead capture.
- 6-9 months to Top 3 Maps + 50K monthly visits in major cities.
Real estate portal architecture
`
[Visitor] → [Home page with powerful search]
↓
[Filtered listings: type / district / budget]
↓
[Property page: 15-25 photos + plan + location + virtual tour]
↓
[CTA: visit, quote, direct agent contact]
↓
[WhatsApp + email lead capture]
↓
[Auto agent assignment + CRM tracking]
`
Step 1 — data model (Prisma)
`prisma
model Property {
id String @id @default(cuid())
slug String @unique
reference String @unique
title String
type PropertyType
transaction TransactionType
price Int
currency String @default("XOF")
surface Int?
bedrooms Int?
bathrooms Int?
city String
district String
address String?
latitude Float?
longitude Float?
description String
features String[]
images Image[]
status PropertyStatus
agentId String
agent Agent @relation(fields: [agentId], references: [id])
views Int @default(0)
createdAt DateTime @default(now())
@@index([city, district, type, status])
@@index([transaction, price])
}
model Image {
id String @id @default(cuid())
propertyId String
property Property @relation(fields: [propertyId], references: [id])
url String
caption String?
order Int
}
model Agent {
id String @id @default(cuid())
name String
phone String
whatsapp String
email String
photoUrl String?
bio String?
properties Property[]
}
`
Step 2 — powerful Algolia search
`tsx
'use client';
import { InstantSearch, SearchBox, Hits, RefinementList, RangeInput } from 'react-instantsearch';
import algoliasearch from 'algoliasearch/lite';
const client = algoliasearch(
process.env.NEXT_PUBLIC_ALGOLIA_APP_ID!,
process.env.NEXT_PUBLIC_ALGOLIA_SEARCH_KEY!
);
export default function SearchPage() {
return (
);
}
`
Algolia: $0 up to 10K monthly searches, $50/100K beyond. Essential for fast search experience.
Step 3 — SEO-optimized property page
`tsx
export async function generateMetadata({ params }) {
const property = await getPropertyBySlug(params.slug);
return {
title: ${property.title} - ${property.district}, ${property.city},
description: ${property.type} of ${property.surface}m² for ${property.transaction === 'SALE' ? 'sale' : 'rent'} in ${property.district}, ${property.city}. Price: ${property.price.toLocaleString()} ${property.currency}.,
openGraph: {
images: property.images.map(i => ({ url: i.url })),
},
};
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
}
export default async function PropertyPage({ params }) {
const property = await getPropertyBySlug(params.slug);
return (
{property.title}
