Built for the Nomba Hackathon 2026 — Infrastructure Track
ICE is a production-grade middleware infrastructure layer built on top of Nomba's Dedicated Virtual Account (DVA) APIs. It abstracts Nomba's raw primitives into a multi-tenant, developer-friendly platform that marketplace operators and their vendors can integrate in minutes.
The backend API is deployed and publicly accessible on Render:
- Base URL:
https://ice-nomba-hackathon.onrender.com - Swagger UI (Interactive API Explorer): https://ice-nomba-hackathon.onrender.com/api-docs
- ReDoc (Reading View): https://ice-nomba-hackathon.onrender.com/redoc
- Health Check: https://ice-nomba-hackathon.onrender.com/healthz
- Product Requirements:
ICE_PRD.md - Engineering Standards & Git Workflow:
ICE_ENGINEERING.md - Webhook Integration & Testing Strategy:
docs/webhook-integration.md— see this if evaluating live webhook delivery - API Reference:
docs/api-reference.md, also served live at/api-reference— every endpoint, auth tiers, real Nomba webhook payload shape, and known implementation gotchas
- Language: TypeScript (strict mode)
- API Server: Node.js + Express
- Frontend: Next.js + Tailwind CSS
- Database: PostgreSQL
- Cache & Queues: Redis + BullMQ
To test the current progress of the API and Dashboard locally:
- Node.js (v18+)
- PostgreSQL (running locally)
- Redis (running locally)
Copy the .env.example file to create your local .env:
cp .env.example .envEnsure your DATABASE_URL and REDIS_URL are correct for your local setup.
Install dependencies and run the server:
npm install
npm run devThe server will start on http://localhost:3000.
In a new terminal window, start the Next.js UI:
cd dashboard
npm install
npm run devThe dashboard will be available at http://localhost:3001.
The REST API is fully documented and interactive. While the backend server (npm run dev) is running, you can access:
- Swagger UI (Interactive API Explorer): http://localhost:3000/api-docs
- ReDoc (Reading View): http://localhost:3000/redoc
All endpoints are fully authenticated via API Keys. You can retrieve an initial API Key by interacting with the POST /v1/merchants/register endpoint in the Swagger UI.