WhatsApp-native RSVP & M-Pesa payments platform for Kenya. Guests never leave WhatsApp. Organisers never chase anyone manually. Payments flow through M-Pesa. Data lands in a clean dashboard in real time.
# AWALI
> **awali** _(Swahili)_ — the beginning; the origin; the very first step.
**WhatsApp-native RSVP & M-Pesa payments platform for Kenya.**
Guests never leave WhatsApp. Organisers never chase anyone manually. Payments flow through M-Pesa. Data lands in a clean dashboard in real time.
🌐 awali.co.ke
---
## How It Works
### For the Guest
1. Scan QR code or tap WhatsApp link
2. Flow opens inside WhatsApp — native form UI (no typing, no confusion)
3. Pay via M-Pesa STK Push — PIN prompt appears on their phone
4. Receive confirmation in the same chat
### For the Organiser
1. Create an event + configure RSVP questions
2. Get a QR code + WhatsApp link
3. Watch the dashboard — real-time RSVPs, payments, check-ins
---
## Architecture
```
┌─────────────────────────────────────────────────────────────┐
│ FRONTEND (Nuxt 4 on AWS Amplify) │
│ Pure API consumer — calls API Gateway endpoints │
│ Dashboard, event creation, analytics │
└────────────────────────┬────────────────────────────────────┘
│ HTTPS
┌────────────────────────▼────────────────────────────────────┐
│ AWS API GATEWAY (HTTP API) │
├──────────────────────────────────────────────────────────────┤
│ /webhook → webhook Lambda (Meta verification + msgs) │
│ /flow → flow_endpoint Lambda (encrypted Flows) │
│ /mpesa/callback → mpesa_callback Lambda (Safaricom) │
└────────────────────────┬────────────────────────────────────┘
│
┌────────────────────────▼────────────────────────────────────┐
│ LAMBDA FUNCTIONS (Python 3.12) │
│ ├── webhook — receives WhatsApp messages │
│ ├── flow_endpoint — handles Flow data_exchange │
│ ├── mpesa_callback — processes M-Pesa results │
│ └── send_message — sends outbound WhatsApp messages │
└────────────────────────┬────────────────────────────────────┘
│
┌─────── …