Skip to content

Design

Technical documentation for YAAMon's architecture and internals.

Package layout

Package Responsibility
internal/db SQLite access, migrations, typed query functions
internal/auth Password hashing, session encoding/signing, middleware
internal/config Viper-based config loading and validation
internal/server HTTP handlers, routing, middleware, template rendering
internal/ami Asterisk Manager Interface client and connection manager
internal/aslstats AllStarLink stats API fetcher
internal/astdb AllStar node database (astdb.txt) reader and updater
internal/backup Backup/restore, Allmon3 INI import, encryption
internal/sse Server-Sent Events broker for live dashboard updates
internal/tls TLS config (self-signed, provided cert, ACME)
internal/state Node state model (connections, links)
internal/mdns Optional mDNS announcement
internal/version Build-time version string

Topics

  • AMI Interface — actions sent, events consumed, wire format, manager.conf requirements
  • Database — schema, tables, migrations
  • Authentication — auth modes, sessions, middleware chain, plaintext safety check
  • API — HTTP endpoint inventory, active links enrichment
  • CI/CD — GitHub Actions, release process, branch image builds
  • Testing — unit, integration, and end-to-end test framework

Server configuration (ServerConfig)

Key fields in server: config (internal/config/config.go):

Field Default Purpose
http_port 80 HTTP listen port
https_port 443 HTTPS listen port (when TLS enabled)
redirect_http false Redirect HTTP → HTTPS
bind_address "" (all) Interface to bind (IP or hostname)
base_path "" URL prefix when hosted under a sub-path (e.g. /yaamon)
allow_public_plaintext false Bypass public-IP plaintext safety check