Le marché restauration urbaine en Afrique : Dakar 2 800+ restaurants formels, Abidjan 4 200+, Lagos 8 500+. La demande digitalisée explose : 68 % des Sénégalais 25-40 ans préfèrent réserver en ligne plutôt qu'appeler.
TL;DR
- Site restaurant = vitrine + opérationnel (résa, click & collect, livraison).
- Stack : Next.js + booking + click & collect + paiement Wave/OM + Glovo intégré.
- +35-70 % de commandes vs restaurant non-digital.
Architecture site restaurant
`
[Site restaurant]
├── Hero + photos plats
├── Menu (carte) avec prix
├── Réservation table en ligne
├── Click & collect / Livraison
├── Avis clients + Google reviews
├── À propos / chef / philosophie
└── Photos vie restaurant
`
Étape 1 — réservation table en ligne
`tsx
// app/reservation/page.tsx
'use client';
export default function ReservationPage() {
return (
steps={[ { name: 'Date', component: ({ onNext }) => ( disabledDates={getFullDates()} // dates complètes onSelect={(date) => onNext({ date })} /> ), }, { name: 'Heure + couverts', component: TimeAndPartySize, }, { name: 'Vos infos', component: GuestInfo, }, { name: 'Confirmation', component: ({ data }) => ( {data.partySize} personnes le {format(data.date, 'PPPP')} à {data.time} Vous recevrez SMS + WhatsApp avec rappel 2h avant. ), }, ]} onComplete={async (data) => { await fetch('/api/reservations', { method: 'POST', body: JSON.stringify(data), }); }} />Réserver une table
Réservation confirmée
);
}
`
Confirmation SMS + WhatsApp -85 % no-show.
Étape 2 — click & collect
`tsx
// app/commander/page.tsx
'use client';
export default function ClickAndCollect() {
const [cart, setCart] = useState([]);
const [pickupTime, setPickupTime] = useState(null);
return (
value={pickupTime} onChange={setPickupTime} minDelay={30} // min 30 min de prep /> const res = await fetch('/api/orders', { method: 'POST', body: JSON.stringify({ cart, pickupTime, type: 'CLICK_AND_COLLECT' }), }); const { paymentUrl } = await res.json(); window.location.href = paymentUrl; // Wave / OM }}> Payer et confirmer
);
Besoin d'un site web professionnel ?
Kolonell crée des sites web qui attirent des clients, optimisés pour le marché sénégalais. Devis gratuit en 2 minutes.
}
`
Étape 3 — livraison via partenaires
`tsx
const DELIVERY_PROVIDERS = {
glovo: { commission: 22, available: ['SN', 'CI', 'CM'] },
yango_food: { commission: 18, available: ['SN', 'CI'] },
heetch_food: { commission: 25, available: ['SN'] },
internal: { commission: 0, requires: 'own delivery team' },
};
// Stratégie : utiliser Glovo/Yango pour acquisition + bascule vers livraison interne pour clients fidèles
`
Pour un restaurant, mix optimal :
- 40 % click & collect (0 % commission)
- 30 % livraison interne (frais + 1500-2500 FCFA)
- 30 % via Glovo/Yango (acquisition)
Étape 4 — modèle de données
`prisma
model Restaurant {
id String @id @default(cuid())
name String
slug String @unique
city String
district String
address String
cuisine String[]
priceRange String // $ / $$ / $$$
hours Json // {monday: '11:30-23:00', ...}
capacity Int
averageMealPrep Int // min
menus Menu[]
tables Table[]
reservations Reservation[]
}
model Menu {
id String @id @default(cuid())
restaurantId String
name String // "Carte du midi", "Soir", "Dimanche"
isActive Boolean
items MenuItem[]
}
model MenuItem {
id String @id @default(cuid())
menuId String
name String
description String
category String
priceXof Int
imageUrl String?
allergens String[]
isAvailable Boolean @default(true)
isPopular Boolean
prepTimeMin Int
}
model Reservation {
id String @id @default(cuid())
restaurantId String
customerId String?
customerName String
customerPhone String
partySize Int
scheduledAt DateTime
duration Int @default(120) // min
status String // PENDING / CONFIRMED / SEATED / CANCELLED / NO_SHOW
specialRequests String?
}
model FoodOrder {
id String @id @default(cuid())
restaurantId String
customerId String?
type String // DINE_IN / CLICK_AND_COLLECT / DELIVERY
items Json // [{itemId, qty, modifiers, price}]
totalAmount Int
status String
pickupTime DateTime?
deliveryAddress String?
paymentMethod String
paidAt DateTime?
notes String?
}
`
Étape 5 — SEO local restaurant
Voir méthode boulangerie → — patron similaire.
Articles cibles :
- "Meilleur restaurant thiéboudienne Dakar 2026"
- "Restaurant ambiance romantique Almadies"
- "Brunch dimanche Dakar : top 10"
- "Restaurant business lunch Plateau"
- "Cuisine fusion sénégalaise contemporaine"
GMB optimisé (catégorie restaurant + cuisine spécifique).
Cas réel — restaurant Almadies (Dakar)
| Métrique | Avant | Après 12 mois |
|---|---|---|
| Couverts/jour | 65 | 110 |
| Réservations en ligne (% total) | 0 | 48 % |
| Click & collect (commandes/mois) | 0 | 320 |
| Livraisons (commandes/mois) | 80 (téléphone) | 520 (mix) |
| Note Google | 4.2 / 89 | 4.7 / 412 |
| CA mensuel | 4.8M FCFA | 12.4M FCFA |
FAQ
Q : Photos plats par smartphone OK ?
R : Non. Investissement photographe pro 200-500K = ROI immédiat. Photos = 80 % de la décision.
Q : Glovo / Yango négociable ?
R : 22 % standard. Au-delà 200 commandes/mois, négocier 18-20 %.
Q : Réservation gratuite ou avec acompte ?
R : Gratuite < 6 personnes. Acompte 50 % par personne pour groupes >6 (anti no-show).
Conclusion
Restaurant digital Afrique 2026 = vitrine + opérationnel. Investissement 4-12M FCFA selon ambition. ROI 6-12 mois. Combinaison réservation + click & collect + livraison = +35-70 % CA vs concurrent non-digital.
Mohamed Bah
Fondateur, Kolonell
Passionné par le digital et l'entrepreneuriat en Afrique, Mohamed accompagne les entreprises sénégalaises dans leur transformation digitale depuis 2020. Fondateur de Kolonell, il croit que chaque PME mérite une présence en ligne professionnelle et accessible.

