African urban restaurant market: Dakar 2,800+ formal restaurants, Abidjan 4,200+, Lagos 8,500+. Digitized demand exploding: 68% of Senegalese 25-40 prefer online booking over calling.
TL;DR
- Restaurant site = showcase + operational (booking, click & collect, delivery).
- Stack: Next.js + booking + click & collect + Wave/OM payment + integrated Glovo.
- +35-70% orders vs non-digital restaurant.
Restaurant site architecture
`
[Restaurant site]
├── Hero + dish photos
├── Menu (card) with prices
├── Online table reservation
├── Click & collect / Delivery
├── Customer reviews + Google reviews
├── About / chef / philosophy
└── Restaurant life photos
`
Step 1 — online table reservation
`tsx
'use client';
export default function ReservationPage() {
return (
steps={[ { name: 'Date', component: ({ onNext }) => ( disabledDates={getFullDates()} onSelect={(date) => onNext({ date })} /> ), }, { name: 'Time + party size', component: TimeAndPartySize, }, { name: 'Your info', component: GuestInfo, }, { name: 'Confirmation', component: ({ data }) => ( {data.partySize} people on {format(data.date, 'PPPP')} at {data.time} You'll receive SMS + WhatsApp reminder 2h before. ), }, ]} onComplete={async (data) => { await fetch('/api/reservations', { method: 'POST', body: JSON.stringify(data), }); }} />Book a table
Reservation confirmed
);
}
`
SMS + WhatsApp confirmation -85% no-show.
Step 2 — click & collect
`tsx
'use client';
export default function ClickAndCollect() {
const [cart, setCart] = useState([]);
const [pickupTime, setPickupTime] = useState(null);
return (
value={pickupTime} onChange={setPickupTime} minDelay={30} /> 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; }}> Pay and confirm
);
}
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
`
Step 3 — partner delivery
`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' },
};
// Strategy: use Glovo/Yango for acquisition + shift to internal delivery for loyal customers
`
For a restaurant, optimal mix:
- 40% click & collect (0% commission)
- 30% internal delivery (fees + 1,500-2,500 XOF)
- 30% via Glovo/Yango (acquisition)
Step 4 — data model
`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
capacity Int
averageMealPrep Int
menus Menu[]
tables Table[]
reservations Reservation[]
}
model Menu {
id String @id @default(cuid())
restaurantId String
name String
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)
status String
specialRequests String?
}
model FoodOrder {
id String @id @default(cuid())
restaurantId String
customerId String?
type String
items Json
totalAmount Int
status String
pickupTime DateTime?
deliveryAddress String?
paymentMethod String
paidAt DateTime?
notes String?
}
`
Step 5 — restaurant local SEO
See bakery method → — similar pattern.
Target articles:
- "Best thiéboudienne restaurant Dakar 2026"
- "Romantic atmosphere restaurant Almadies"
- "Sunday brunch Dakar: top 10"
- "Business lunch restaurant Plateau"
- "Contemporary Senegalese fusion cuisine"
GMB optimized (restaurant + specific cuisine category).
Real case — Almadies restaurant (Dakar)
| Metric | Before | After 12 months |
|---|---|---|
| Covers/day | 65 | 110 |
| Online reservations (% total) | 0 | 48% |
| Click & collect (orders/month) | 0 | 320 |
| Deliveries (orders/month) | 80 (phone) | 520 (mix) |
| Google rating | 4.2 / 89 | 4.7 / 412 |
| Monthly revenue | 4.8M XOF | 12.4M XOF |
FAQ
Q: Smartphone dish photos OK?
A: No. Pro photographer 200-500K investment = immediate ROI. Photos = 80% of decision.
Q: Glovo / Yango negotiable?
A: 22% standard. Past 200 orders/month, negotiate 18-20%.
Q: Free reservation or with deposit?
A: Free <6 people. 50% per-person deposit for groups >6 (anti no-show).
Conclusion
Digital African restaurant 2026 = showcase + operational. 4-12M XOF investment per ambition. 6-12 month ROI. Combo reservation + click & collect + delivery = +35-70% revenue vs non-digital competitor.
Mohamed Bah
Fondateur, Kolonell
Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.

