Skip to main content

Self-Hosting Overview

AlertifyPro is fully open to self-host. The backend is written in Go, the frontend in Next.js, and the system runs on PostgreSQL and Redis.

Architecture

                    ┌────────────────────────────────────┐
│ AlertifyPro Stack │
│ │
Browser ─────────→│ Frontend (Next.js, :3000) │
│ ↕ HTTP │
│ API Server (Go Chi, :3001) │
│ ↕ │
│ PostgreSQL (alertify_pro DB) │
│ ↕ │
│ Redis │
│ │
│ Scheduler (Go, polls every 10s) │
│ ↓ writes check results │
│ Notification Worker (Go) │
│ ↓ dispatches Slack/email/SMS/etc │
└────────────────────────────────────┘

Components

ComponentPathRole
API Servercmd/api-serverREST API + WebSocket
Schedulercmd/schedulerRuns service checks every N seconds
Alert Enginecmd/alert-engineEvaluates alert rules
Notification Workercmd/notification-workerSends Slack, email, PagerDuty, SMS
Frontendfrontend/Next.js dashboard UI
DatabasePostgreSQLalertify_pro database
Cache/QueueRedisJob queue and caching

System requirements

ResourceMinimumRecommended
CPU2 cores4 cores
RAM2 GB4 GB
PostgreSQL15+15+
Redis7+7+
Go1.22+Latest
Node.js18+ (for frontend)20+

Deployment guides

Database

AlertifyPro uses PostgreSQL with SQL queries generated by sqlc. Schema and migration files are in backend/db/.

# Initialize the database schema
make db-init

# Or with a specific connection string
make db-init DB_URL=postgres://user:pass@host:5432/alertify_pro?sslmode=disable

Language / tech stack

LayerTechnology
BackendGo 1.22, Chi router, sqlc, pgx
FrontendNext.js 14, TypeScript, Tailwind CSS
DatabasePostgreSQL 15
QueueRedis 7
AuthJWT (HS256), bcrypt for passwords, AES-256-GCM for stored credentials