Pingo is a self-hosted uptime monitoring REST API.
It provides reliable monitoring of HTTP endpoints, exposes results through a clear API, and can be integrated directly into your systems and workflows.
When a monitored endpoint goes down, Pingo can send alerts via email or webhook.
- HTTP Monitoring Management
- Create, read, update, and delete monitoring targets
- Retrieve monitoring results for tracked endpoints
- User Management
- User registration and account confirmation
- Secure login with password and one-time password (OTP) verification
- Authentication via JWT tokens
- Alerting
- Configurable alerts via email
- Configurable alerts via webhooks
- Golang with Fiber — lightweight, high-performance web framework
- Postgres — relational database
- Redis — caching and session management
- GORM — ORM for Golang
- Kafka — event streaming and asynchronous processing
- FX — dependency injection framework
- Cobra — CLI framework
- Viper — configuration management
- Testify — testing toolkit
- OpenTelemetry — tracing and observability
- JWT — token-based authentication
- ZeroLog - json log
- Go 1.25+
- Docker (for Postgres, Redis, Kafka)
git clone https://github.com/cristiano-pacheco/pingo.git
cd pingo
go mod tidyThe project includes a Makefile to simplify common tasks:
make install-libs– Install development tools (linters, mockery, swag, nilaway, vuln checker)make run– Run the API servermake migrate– Run database migrations
make lint– Rungolangci-lintmake vuln-check– Run Go vulnerability checkmake nilaway– Runnilawayfor nil checkingmake static– Run lint, vuln-check, and nilaway
make test– Run unit testsmake test-integration– Run integration testsmake cover– Run tests with coverage report (HTML output inreports/cover.html)
make update-mocks– Regenerate mocks usingmockerymake update-swagger– Update Swagger documentation
MIT License. See LICENSE for details.