Skip to content

cristiano-pacheco/pingo

Repository files navigation

Pingo

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.


Features

  • 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

Tech Stack

  • 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

Getting Started

Prerequisites

  • Go 1.25+
  • Docker (for Postgres, Redis, Kafka)

Installation

git clone https://github.com/cristiano-pacheco/pingo.git
cd pingo
go mod tidy

Make Commands

The project includes a Makefile to simplify common tasks:

Development

  • make install-libs – Install development tools (linters, mockery, swag, nilaway, vuln checker)
  • make run – Run the API server
  • make migrate – Run database migrations

Code Quality

  • make lint – Run golangci-lint
  • make vuln-check – Run Go vulnerability check
  • make nilaway – Run nilaway for nil checking
  • make static – Run lint, vuln-check, and nilaway

Testing

  • make test – Run unit tests
  • make test-integration – Run integration tests
  • make cover – Run tests with coverage report (HTML output in reports/cover.html)

Utilities

  • make update-mocks – Regenerate mocks using mockery
  • make update-swagger – Update Swagger documentation

License

MIT License. See LICENSE for details.

About

Pingo is a self-hosted, open-source monitoring tool

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages