Statusnook is a self-hosted status page and monitoring tool built with Go, HTMX, and SQLite that lets users quickly deploy a professional-looking status page to monitor endpoints and receive notifications when services fail. Designed for developers, DevOps teams, and small-to-medium businesses, it eliminates the need for third-party status page services by providing a lightweight, standalone solution that can be deployed on any machine with Docker, as a binary, or via one-click cloud templates. Its simplicity and minimal dependencies make it ideal for teams seeking full control over their monitoring infrastructure without the complexity of enterprise-grade systems.
Statusnook emphasizes ease of use with a web-based UI for configuration, support for YAML-based config via GitHub push, and multiple deployment options including Docker, standalone binaries, and reverse proxy setups. It’s optimized for low-resource environments while still delivering real-time status updates, historical logs, and configurable alerts—making it a practical alternative to SaaS monitoring tools for those who prefer self-hosted solutions.
What You Get
- Self-hosted status page - Deploy a fully customizable, responsive status page with real-time service health indicators using just a few commands or Docker.
- Endpoint monitoring - Monitor HTTP(S) endpoints with configurable intervals, timeout settings, and status detection (2xx-3xx = healthy).
- Web-based configuration UI - Add, edit, or delete monitors directly through a browser interface without touching config files.
- YAML configuration support - Define and manage monitors via YAML files, with optional GitHub integration to auto-reload config on push.
- Built-in notifications - Receive alerts via email or webhooks when endpoints go down or recover, with configurable thresholds and retry logic.
- Historical logs - View detailed monitoring history including response times, status codes, and downtime events with a clean UI.
- Multiple deployment options - Choose from Docker, standalone binary, reverse proxy (Caddy/NGINX), or one-click cloud deployments on DigitalOcean, Vultr, Railway, and Zeabur.
Common Use Cases
- Building a public status page for SaaS products - A startup deploying Statusnook to show real-time uptime of their API and web services to customers, replacing costly third-party tools like UptimeRobot.
- Monitoring internal microservices - DevOps teams using Statusnook to track health of internal APIs, databases, and background jobs without exposing them to external monitoring services.
- Problem → Solution flow: Need a simple status page but don’t want to pay for SaaS - Teams frustrated with subscription fees or data privacy concerns use Statusnook’s self-hosted model to deploy a secure, customizable status page in under 5 minutes using Docker or the one-click installer.
- Team workflow for non-technical stakeholders - Product managers and customer support teams use the web UI to view service status and share links with clients without needing access to cloud dashboards or tickets.
Under The Hood
Statusnook is a developer-focused monitoring and alerting platform designed for simplicity and ease of deployment. It combines a lightweight Go backend with embedded static assets and SQLite, offering a self-contained solution for real-time status tracking and notifications.
Architecture
The project adopts a monolithic architecture that integrates backend, database, and frontend components into a single unit. This approach simplifies deployment while maintaining clear separation of concerns.
- The monolithic structure unifies Go backend logic, database schema, and UI static assets into one deployable unit.
- A layered architecture is evident with distinct modules for configuration, core logic, and infrastructure.
- Modular organization separates database migrations and static assets from the main application code.
- Inter-component communication is handled through environment variables, command-line flags, and standard HTTP routing.
Tech Stack
The project is built with Go as its primary language, utilizing modern tools and libraries to support lightweight deployment and dynamic UI interactions.
- Built with Go 1.22, using a minimal web framework for HTTP handling and routing.
- Relies on SQLite for data persistence, HTMX for dynamic UI rendering, and Monaco Editor for code editing.
- Employs Docker and Packer for containerization and image creation, with shell scripts for deployment automation.
- Includes a basic test structure leveraging Go’s built-in testing capabilities.
Code Quality
The codebase reflects a mixed quality profile with functional implementation but limited test coverage and error handling sophistication.
- Testing practices are basic, with minimal emphasis on comprehensive test suites or coverage.
- Error handling is straightforward and lacks idiomatic Go patterns for robustness.
- Code consistency is moderate, with opportunities to improve naming and structural clarity.
What Makes It Unique
Statusnook distinguishes itself through its developer-first approach and integration of real-time updates with minimal tooling overhead.
- Features a self-contained deployment model using embedded static assets and SQLite for low-friction setup.
- Leverages HTMX to deliver dynamic UI updates without full page reloads, enhancing user experience.
- Offers extensible notification channels supporting various communication methods like email and Slack.
- Incorporates a built-in configuration and migration system for customizable monitoring rules.