Modern Incident Management Platform
Features • Screenshots • Getting Started • Documentation
Open-source incident management platform with alerting, on-call scheduling, and escalation policies. Built for teams who want full control over their workflow.
|
|
|
|
- Docker and Docker Compose
- Git
# Clone the repository
git clone https://github.com/nmn3m/pulsar.git
cd pulsar
# Start all services
make up
# Apply database migrations
make migrate-up| Service | URL |
|---|---|
| Web UI | http://localhost:5173 |
| API | http://localhost:8081/api/v1 |
| API Docs | http://localhost:8081/swagger/index.html |
Optionally seed the database with sample data for testing:
cd backend
DATABASE_URL="postgres://pulsar:pulsar_dev_password@localhost:5433/pulsar?sslmode=disable" \
JWT_SECRET="dev_jwt_secret_change_in_production_min_32_chars" \
JWT_REFRESH_SECRET="dev_refresh_secret_change_in_production_min_32_chars" \
go run ./cmd/seed/main.goDemo credentials:
admin@acme-corp.com/DemoPass123!
Pulsar supports two authentication methods:
# JWT Token Authentication
curl -X POST http://localhost:8081/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "password"}'
# Then use the token
curl http://localhost:8081/api/v1/alerts \
-H "Authorization: Bearer <access_token>"# API Key Authentication
curl http://localhost:8081/api/v1/alerts \
-H "X-API-Key: <your_api_key>"| Resource | Description |
|---|---|
/auth/* |
Authentication (login, register, refresh) |
/alerts/* |
Alert CRUD, acknowledge, close, snooze, assign |
/incidents/* |
Incident management with responders and timeline |
/teams/* |
Team and member management |
/schedules/* |
On-call schedules, rotations, overrides |
/escalation-policies/* |
Escalation rules and targets |
/webhooks/* |
Incoming and outgoing webhook configuration |
/metrics/* |
Dashboard and reporting metrics |
Full interactive documentation available at
/swagger/index.html
┌─────────────────────┐
│ Notification │
│ Channels │
│ (Email, Slack, │
│ Teams, Webhook) │
└──────────▲──────────┘
│
┌─────────────────┐ ┌──────────┴──────────┐ ┌─────────────────┐
│ Monitoring │ │ │ │ Frontend │
│ Systems │─────────▶│ Pulsar Backend │◀────────── │ (SvelteKit) │
│ (Prometheus, │ Webhook │ (Go/Gin) │ API │ │
│ Datadog, etc.) │ │ │ │ │
└─────────────────┘ └──────────┬──────────┘ └─────────────────┘
│
┌──────────▼──────────┐
│ PostgreSQL │
│ Database │
└─────────────────────┘
| Component | Technology |
|---|---|
| Backend | Go 1.25, Gin, sqlx |
| Frontend | SvelteKit, TypeScript, Tailwind CSS |
| Database | PostgreSQL 16 |
| Auth | JWT, bcrypt |
| Real-time | WebSocket |
| Deployment | Docker, Docker Compose |
make up # Start services
make down # Stop services
make logs # View logs
make migrate-up # Run migrations
make test-integration # Run test suiteLocal Development Setup
Backend:
cd backend
go mod download
export DATABASE_URL="postgres://pulsar:pulsar_dev_password@localhost:5433/pulsar?sslmode=disable"
export JWT_SECRET="dev_jwt_secret_change_in_production_min_32_chars"
air # Hot reload development serverFrontend:
cd frontend
npm install
export VITE_API_URL="http://localhost:8081"
npm run devThis project is licensed under the Apache License 2.0.







