WildSMS built for Africa's Talking Wildlife & Conservation Hackathon Kaduna Nigeria
# WildSMS 🌿
### Wildlife Awareness Platform — Powered by Africa's Talking SMS API
> Connecting rural Nigerian communities to wildlife conservation through SMS — no smartphone, no data, no barriers.
---
## Quick Start
```bash
# 1. Install dependencies
npm install
# 2. Credentials are already in .env — ready to go for sandbox testing
# 3. Start the server
npm start
# 4. Open the dashboard
open
localhost
```
---
## Project Structure
```
wildsms/
├── server.js # Express app + cron jobs
├── .env # Africa's Talking credentials
├── package.json
├── data/
│ ├── content.js # All SMS stories, facts, and message templates
│ └── store.js # In-memory subscriber + report store
├── routes/
│ ├── sms.js # Inbound SMS webhook — handles all keyword flows
│ ├── broadcast.js # Broadcast endpoints (fact, story, custom)
│ └── smsService.js # Africa's Talking SDK wrapper
└── public/
└── index.html # Dashboard UI
```
---
## SMS Keywords
| Keyword | Action |
|---------|--------|
| `JOIN` | Subscribe to WildSMS |
| `FACT` | Receive a daily wildlife fact |
| `STORY` | Start a 3-part wildlife story |
| `MORE` | Continue the current story |
| `REPORT POACH` | Report illegal hunting |
| `REPORT FIRE` | Report a forest fire |
| `REPORT TRAP` | Report a snare/trap found |
| `REPORT TRADE` | Report illegal wildlife sale |
| `STOP` | Unsubscribe |
| `HELP` | Show help menu |
---
## API Endpoints
| Method | Endpoint | Description |
|--------|----------|-------------|
| `POST` | `/sms/inbound` | Africa's Talking webhook (inbound SMS) |
| `POST` | `/sms/delivery` | Delivery report callback |
| `POST` | `/broadcast/fact` | Trigger daily fact broadcast |
| `POST` | `/broadcast/story` | Broadcast story start to all subscribers |
| `POST` | `/broadcast/custom` | Send custom message (`{ message, phone? }`) |
| `GET` | `/api/stats` | Dashboard stats (JSON) |
| `GET` | `/api/reports` | All t …