A captive portal billing system for MikroTik WiFi hotspots with Mobile Money payments (MTN MoMo & Airtel Money) for Uganda.
- ๐ฑ Mobile-first captive portal - Clean payment interface
- ๐ณ Mobile Money integration - MTN MoMo & Airtel Money via Flutterwave
- ๐ซ Voucher system - Pre-paid code redemption
- ๐ Admin dashboard - Revenue stats, payments, active users
- ๐ MikroTik integration - Auto-authorize users after payment
| Package | Duration | Price |
|---|---|---|
| 1 DAY | 24 hours | 1,000 UGX |
| 3 DAYS | 72 hours | 2,500 UGX |
| WEEKLY | 7 days | 6,000 UGX |
| MONTHLY | 30 days | 25,000 UGX |
# Install dependencies
npm install
# Run in development mode (demo mode enabled)
npm run devOpen http://localhost:3000 for the portal and http://localhost:3000/admin for the dashboard.
Create a .env.local file:
# Flutterwave API (get from dashboard.flutterwave.com)
FLW_PUBLIC_KEY=your_public_key
FLW_SECRET_KEY=your_secret_key
# MikroTik Router
MIKROTIK_HOST=192.168.88.1
MIKROTIK_USER=admin
MIKROTIK_PASSWORD=your_password
# Demo mode (set to 'false' for production)
DEMO_MODE=true- Next.js 15 - React framework
- SQLite - Database (better-sqlite3)
- Flutterwave - Payment processing
- MikroTik API - Router integration
- Tailwind CSS - Styling
- Register at Flutterwave
- Add API keys to environment
- Configure MikroTik router
- Set
DEMO_MODE=false - Deploy to your server
MIT