An API that provides information about the status of your services automatically. It implements protocols like Teamspeak and SMTP natively, instead of only using plain TCP/UDP packets to calculate their uptime.
  • Go 62.9%
  • JavaScript 35.2%
  • Dockerfile 0.9%
  • HTML 0.6%
  • CSS 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Leon Schmidt e40cc5ed86
All checks were successful
/ docker-build-and-push (push) Successful in 4m34s
ci: migrated from Gitlab CICD to Forgejo Actions
2026-10-16 18:27:45 +02:00
.devcontainer chore: add go extension to devcontainer def 2026-09-04 15:11:09 +00:00
.forgejo/workflows ci: migrated from Gitlab CICD to Forgejo Actions 2026-10-16 18:27:45 +02:00
frontend fix: css bug, where CurrentStatus pills do not use the full height 2026-09-04 20:46:18 +00:00
server feat: add option to observe todays uptime (closes #42) 2026-09-04 15:10:56 +00:00
.dockerignore chore: devcontainer updated and lock added (for both devcontainer and latest npm 22) 2026-09-04 12:15:38 +00:00
.gitignore Final changes 2021-03-12 22:18:42 +01:00
dashboard.png Closes #45 2023-10-04 12:38:36 +02:00
docker-compose.yml Fixed #51 2024-11-14 20:32:07 +01:00
Dockerfile Upgraded to go 1.24.9 2025-10-30 13:58:21 +01:00
LICENSE Added LICENSE 2025-08-11 21:03:25 +02:00
README.md Closed #55 2024-11-14 21:43:48 +01:00

Status API

Status API Dashboard

The Status API is a dashboard to log the uptime of server services. Unlike other uptime tools, the services are checked at the application level - and not only via TCP/UDP. This allows for more protocol-related information like HTTP status code or the number of connected users on a Minecraft server.

Additionally, the dashboard can display status messages like planned maintenance or other defects. The Status API also generates an Atom feed from them, so service users always stay up to date.

The public dashboard is kept simple and is able to show the uptime-timeline for the last 30-days -- or less when on mobile to preserve some space. The API itself ist CORS-compliant to be used from other web applications.

A public example used in production can be seen here: https://status.leon.wtf

Supported protocols

The so called "Procotol Checkers" are modular pieces of code that can be attached to the Status API to support additional protocols to check your services with. See below for the current list of supported protocols.

Protocols are implemented as Protocol Checker Modules in server/protocols/checkers/. They define, which protocols are supported to be used to check services. Curently, the following Protocol Checkers are implemented:

  • HTTP(S)
    • Optionally with basic authentication
    • Can expect status codes (or status code ranges), HTML content or response headers
  • SMTP
    • Supports StartTLS, implicit and explicit TLS
  • Minecraft
    • Supports displaying the number of connected users
  • Teamspeak (over SSH query)
    • Checks the Teamspeak server without requiring authentication data!

Each protocol can have a deviating test URL and a friendly URL this will be displayed on the dashboard.

By default, all services are checked in a 120 seconds interval.

Supported notifiers

The Status API can inform you if one of your services goes down. Just list the Protocol Checkers, the so-called Notifiers are modular, too. Currently, the following Notifiers are supported:

  • Log (Default Notifier, just logs to STDOUT)
  • Gotify Server
  • Telegram
  • E-Mail (coming soon, see #2)

Configuration

The Status API is configured via a single config.json file. Visit the repository wiki on how to do it.

Tech stack

The frontend was built with React 18.3.1 using node v22.9.0. For styling, Tailwind CSS was used.

The server (API backend) was built using go 1.23.3.