AdLipa — Mobile-Money advertising platform for African businesses (React+Vite+Firebase)
# AdLipa
**adlipa.com** — "Ad" + "Lipa" (to pay, in Swahili/Bemba — as in M-PESA's "Lipa na M-PESA").
**Live:**
adlipa.web.app (canonical) ·
lipila-ads-zm.web.app (legacy, kept in sync)
Pay for social media ad campaigns (Facebook, Instagram, TikTok, YouTube) with mobile money —
Airtel Money, MTN MoMo, Zamtel Kwacha. Built for Zambia first, then all mobile-money markets.
## How it works (concierge MVP)
1. Customer builds a campaign order in the web wizard and gets a mobile money number to pay to.
2. Customer pays manually and sends proof on WhatsApp.
3. Operator confirms payment in the admin panel (`/#/admin`), runs the campaign from the
company's agency ad accounts (Meta Business Manager / TikTok / Google Ads), and updates
status + results. The customer's order page updates live.
Phase 2 replaces step 2 with automated collection (PawaPay / Flutterwave webhook via Cloud
Functions) and step 3 with the platforms' Marketing APIs.
## Stack
- React + Vite
- Firebase: Hosting, Firestore (project `lipila-ads-zm`)
- Admin auth: Google sign-in, restricted to the operator email in `src/config.js` and `firestore.rules`
## Develop
```bash
npm install
npm run dev
```
## Deploy
```bash
npm run deploy # builds and deploys hosting + firestore rules
```
`firebase.json` deploys to **two** Hosting sites in the `lipila-ads-zm` project —
`adlipa` (adlipa.web.app, canonical) and `lipila-ads-zm` (legacy) — so both URLs
always serve the current build.
## Before going live
- Replace the placeholder mobile money numbers and WhatsApp number in `src/config.js`.
- Enable the Google sign-in provider in Firebase Console → Authentication (for the admin panel).