Production-ready rate limiting microservice β Redis-backed, JWT auth, IP ban system, real-time monitoring. Live on Render.
API: https://api-rate-guardian-1.onrender.com
Free Render instances sleep when inactive β first request may take ~30s.
Admin UI: Run locally or deploy to Vercel.
- Redis-backed rate limiting β sliding window algorithm, accurate across multiple instances
- IP ban system β permanent or timed bans, auto-expiry, ban list export
- JWT admin auth β stateless, secure admin routes
- Real-time dashboard β live stats, rate limit violations, Redis health
- Docker ready β full docker-compose with Redis included
- High performance β 1000+ req/s, less than 50ms average latency
| Layer | Tech |
|---|---|
| Runtime | Node.js 18+ Β· TypeScript 5+ |
| Framework | Express.js |
| Rate limiting store | Redis 7+ via ioredis |
| Auth | JWT (jsonwebtoken) |
| Security | Helmet.js Β· CORS |
| Admin UI | React 18 Β· Tailwind Β· Chart.js |
| DevOps | Docker Β· docker-compose Β· Render |
git clone https://github.com/DIYA73/api-rate-guardian.git
cd api-rate-guardian
cp .env.example .env
docker-compose up -dnpm install
docker run -d -p 6379:6379 redis:7-alpine
npm run devNODE_ENV=development
PORT=5000
REDIS_URL=redis://localhost:6379
JWT_SECRET=your-secret-min-32-chars
JWT_EXPIRES_IN=24h
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=changeme123
DEFAULT_RATE_LIMIT_WINDOW_MS=900000
DEFAULT_RATE_LIMIT_MAX=100
ALLOWED_ORIGINS=http://localhost:3000GET /api/v1/health
GET /api/v1/public/testPOST /api/v1/auth/login
{ "email": "...", "password": "..." }GET /api/v1/admin/stats
POST /api/v1/admin/ban
DELETE /api/v1/admin/ban/:ip
GET /api/v1/admin/bans
GET /api/v1/admin/redis-stats- JWT authentication on all admin routes
- Helmet.js security headers
- CORS allowlist
- Input validation
- Redis password auth (production)
- HTTPS enforced on Render
- Redis-backed rate limiting
- IP ban system
- JWT admin API
- Real-time dashboard
- Docker deployment
- Live production on Render
- Custom rate limit rules per endpoint
- Email notifications for abuse
- API key-based limiting
- Geographic IP tracking
- Advanced analytics
MIT β see LICENSE.
Diya Taib Ismahil
- GitHub: @DIYA73
- LinkedIn: didi-86b00329a
- Dev.to: diya730
- X: @Diya_555696
- Live: api-rate-guardian-1.onrender.com
π¦ Protecting APIs, one request at a time.