47 lines
1.5 KiB
Markdown
47 lines
1.5 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Project Overview
|
|
|
|
alerttonotify receives Alertmanager HTTP webhooks and forwards them as notifications via NATS to a dbus notify service. Written in Go (1.23.3).
|
|
|
|
## Build & Development
|
|
|
|
```bash
|
|
# Build
|
|
go build -v ./...
|
|
|
|
# Lint (available in nix devshell)
|
|
golangci-lint run
|
|
|
|
# Enter dev environment (requires nix with flakes)
|
|
nix develop
|
|
|
|
# Build with nix
|
|
nix build
|
|
```
|
|
|
|
No tests exist yet. The project uses direnv (`.envrc`) to auto-load the nix devshell.
|
|
|
|
## Architecture
|
|
|
|
**main.go** — Entry point. Reads config from environment variables, sets up NATS connection, creates the HTTP server, handles graceful shutdown on SIGINT.
|
|
|
|
**server/server.go** — HTTP server with two routes:
|
|
- `GET /` — health check
|
|
- `POST /alert` — receives Alertmanager webhook payloads (`AlertMessage`/`Alert` structs), builds a summary, and publishes via `NotificationService`
|
|
|
|
**server/notify.go** — `NotificationService` wraps a NATS connection. Serializes `BusNotification` (summary, body, timeout) to JSON and publishes to subject `home2rjusnet.notifications`. Uses NKey authentication.
|
|
|
|
## Configuration
|
|
|
|
All config is via environment variables:
|
|
- `NATS_URL` (required) — NATS server URL
|
|
- `NATS_NKEY` or `NATS_NKEY_FILE` (required) — NKey seed for NATS auth
|
|
- `ALERTTONOTIFY_ADDR` (optional, default `:5001`) — HTTP listen address
|
|
|
|
## Nix
|
|
|
|
The flake builds with `buildGoModule`. The `vendorHash` in `flake.nix` must be updated when Go dependencies change.
|