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

6 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors