Lightweight API monitoring with real-time incident alerts (Slack, Discord, Webhooks).
🚀 Live Demo: https://spectrix.d3labs.tech/
Spectrix monitors your API endpoints and notifies you when something breaks - without heavyweight observability tooling.
It tracks:
- uptime
- response time
- failures
- incidents
and sends alerts via:
- Slack
- Discord
- Webhooks
Landing page and dashboard screens from the current UI.
- API endpoint monitoring (GET/POST/etc.)
- Timeout + retry support per endpoint
- Incident detection (based on repeated failures)
- Real-time alerts (Slack / Discord / generic webhook)
- Encrypted webhook URL storage (AES-256-CBC with per-version keys)
- Logs include status code, latency, and error type (DNS/timeout/network)
- Dashboard UI to manage services, endpoints, incidents, and alert channels
- Multi-service support (group endpoints under a service base URL)
I built Spectrix because I needed a simple way to monitor my APIs without using heavy observability tools.
I wanted:
- scheduled endpoint checks
- failure detection
- instant alerts
This project also helped me explore worker-based systems, retry logic, and alert integrations like Slack and Discord.
- Worker: polls endpoints that are due (
nextCheckAt) on an interval - Logs: stores every check result (success/failure, response time, error type)
- Incidents: created/resolved based on endpoint health over time
- Alerts: triggered on incident create/resolve and sent to configured channels
- Backend: Node.js + Express (TypeScript)
- Database: MongoDB + Mongoose
- Frontend: Next.js (App Router)
- HTTP checks + alerts: Axios
- Validation: Zod
git clone https://github.com/your-username/spectrix.git
cd spectrixcd backend
npm installCopy the example file and fill in the required values:
# macOS / Linux
cp .env.example .env
# Windows (PowerShell)
Copy-Item .env.example .envThen edit backend/.env (Mongo URI, JWT secrets, CORS CLIENT, encryption key values, etc.).
npm run devBackend runs on http://localhost:4000 and exposes the API at http://localhost:4000/api/v1.
cd ../frontend
npm installCopy the example file:
# macOS / Linux
cp .env.example .env.local
# Windows (PowerShell)
Copy-Item .env.example .env.localUpdate NEXT_PUBLIC_API_BASE_URL if your backend runs on a different host/port.
npm run devOpen http://localhost:3000.
- Backend: see
backend/.env.example - Frontend: see
frontend/.env.example
You can connect:
- Slack webhook
- Discord webhook
- Custom webhook
Webhook URLs are encrypted before storing in MongoDB.
A test alert is sent during channel creation to verify configuration.
- Add a service (base URL)
- Add one or more endpoints under that service
- Worker checks endpoints periodically (based on each endpoint’s interval)
- Failures are logged
- After repeated failures → incident created
- Alert sent to your configured channels
- When the endpoint recovers → recovery alert sent
- Backend: deploy
backend/to Render / Railway / Fly.io / VPS - Frontend: deploy
frontend/to Vercel / Netlify
Notes:
- Set
CLIENTto your deployed frontend URL so CORS allows requests. - Enable monitoring in production with
RUN_WORKERS=true.
- Worker runs inside the API process (single instance)
- No alert rules/conditions yet (planned)
- No horizontal scaling for the worker (future)
- Alert rules (custom conditions)
- Email notifications
- Status levels (healthy / degraded / down)
- Charts and analytics
- Queue-based worker (Redis)
PRs are welcome. Feel free to open issues for bugs or feature requests.






