Skip to content

nmn3m/pulsar

Repository files navigation

Pulsar

Pulsar

Modern Incident Management Platform

Go Svelte PostgreSQL License

FeaturesScreenshotsGetting StartedDocumentation


Open-source incident management platform with alerting, on-call scheduling, and escalation policies. Built for teams who want full control over their workflow.


Features

Alerting & Response

  • Alert Management — Full lifecycle tracking with acknowledge, snooze, escalate, and resolve actions
  • Routing Rules — Automatically route alerts based on priority, source, tags, or content
  • Escalation Policies — Multi-level escalation chains with configurable delays

On-Call & Scheduling

  • On-Call Schedules — Flexible rotations with daily, weekly, or custom patterns
  • Schedule Overrides — Easy shift swaps without modifying the rotation
  • Who's On-Call — Instant visibility into current responders

Incident Management

  • Incident Tracking — Coordinate response with responders and timeline
  • Alert Correlation — Link related alerts to incidents
  • Post-Incident Notes — Document findings and actions taken

Integrations & API

  • Notification Channels — Email, Slack, Microsoft Teams, webhooks
  • Incoming Webhooks — Accept alerts from any monitoring tool
  • REST API — Full API with scoped API key authentication

Screenshots

Dashboard Alerts
Dashboard
Real-time metrics and alert overview
Alerts
Manage alerts with priority filtering
Incidents Teams
Incidents
Track and coordinate incident response
Teams
Organize responders into teams
Schedules Escalations
On-Call Schedules
Flexible rotation management
Escalation Policies
Multi-level escalation rules
Notifications Webhooks
Notifications
Email, Slack, Teams channels
Webhooks
Outgoing integrations

Getting Started

Prerequisites

  • Docker and Docker Compose
  • Git

Installation

# Clone the repository
git clone https://github.com/nmn3m/pulsar.git
cd pulsar

# Start all services
make up

# Apply database migrations
make migrate-up

Access

Service URL
Web UI http://localhost:5173
API http://localhost:8081/api/v1
API Docs http://localhost:8081/swagger/index.html

Demo Data

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.go

Demo credentials: admin@acme-corp.com / DemoPass123!


Documentation

API Authentication

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>"

API Endpoints

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


Architecture

                              ┌─────────────────────┐
                              │    Notification     │
                              │      Channels       │
                              │  (Email, Slack,     │
                              │   Teams, Webhook)   │
                              └──────────▲──────────┘
                                         │
┌─────────────────┐           ┌──────────┴──────────┐             ┌─────────────────┐
│   Monitoring    │           │                     │             │    Frontend     │
│   Systems       │─────────▶│   Pulsar Backend    │◀────────── │   (SvelteKit)   │
│  (Prometheus,   │  Webhook  │      (Go/Gin)       │    API      │                 │
│ Datadog, etc.)  │           │                     │             │                 │
└─────────────────┘           └──────────┬──────────┘             └─────────────────┘
                                         │
                              ┌──────────▼──────────┐
                              │     PostgreSQL      │
                              │      Database       │
                              └─────────────────────┘

Tech Stack

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

Development

make up                 # Start services
make down               # Stop services
make logs               # View logs
make migrate-up         # Run migrations
make test-integration   # Run test suite
Local 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 server

Frontend:

cd frontend
npm install
export VITE_API_URL="http://localhost:8081"
npm run dev

License

This project is licensed under the Apache License 2.0.


Built with Go and Svelte

About

Modern Incident Management Platform

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages