Logo Lanfrica

ndizeyedavid/INKINGI-Rescue-AT-Server

Record type:

software
Creator:
ndi
Host:
INKINGI RESCUE Africa's Talking server for USSD and SMS gateways | Model used: Gemini Flash Lite # INKINGI Rescue - USSD & SMS Backend Server A modular USSD application for emergency rescue services in Rwanda, built with Express.js and Africa's Talking API. ## Features - **Multi-language Support**: English, Kinyarwanda, French, and Kiswahili - **Emergency Reporting**: Report various types of emergencies (Fire, Medical, Assault, etc.) - **Distress Alert**: Quick SOS button for immediate emergencies - **Community Posts**: Access news and events - **Hotlines**: Quick access to emergency contact numbers - **Session Management**: Maintains user context throughout the USSD session ## Installation 1. Clone the repository: ```bash git clone github.com cd INKINGI-Rescue-AT-server ``` 2. Install dependencies: ```bash npm install ``` 3. Create a `.env.local` file: ```env PORT=8080 AT_API_KEY=your_africas_talking_api_key AT_USERNAME=your_africas_talking_username GEMINI_API_KEY=your_gemini_api_key ``` 4. Start the server: ```bash npm start # Production with nodemon npm run dev # Development mode ``` ## Development ### Adding New Menu Items 1. **Add menu to `src/config/ussdMenus.js`**: ```javascript export const ussdMenus = { // ... existing menus newMenu: { text: `CON Your menu text 1. Option 1 2. Option 2 0. Go back`, options: { 1: "nextStep1", 2: "nextStep2", 0: "previousMenu", }, }, }; ``` 2. **Add handler in `src/controllers/ussdController.js`** (if terminal action): ```javascript export const terminalHandlers = { // ... existing handlers newHandler: (userData) => { // Your logic here return `END Response message`; }, }; ``` ### Adding Middleware Create a new file in `src/middlewares/` and import it in `server.js`: ```javascript import { yourMiddleware } from "./middlewares/yourMiddleware.js"; app.use(yourMiddleware); ``` ### Session Management Access session data using the `sessionManager`: ```javascript import { sessionManager } from "../utils/sessionManager.js"; // Get session const sess …