Lightweight Sentry alternative
  • Python 53.6%
  • HTML 31.7%
  • CSS 14%
  • Dockerfile 0.5%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-02 12:23:43 +02:00
.forgejo/workflows ci: Set up Docker image CI workflow 2026-03-21 23:15:39 +01:00
.zed build: Dockerize the app 2026-03-20 23:39:49 +01:00
examples feat: Add account settings and improve navigation 2026-05-13 10:23:28 +02:00
mado build: compile occurrence chip styles 2026-09-02 12:13:23 +02:00
AGENTS.md build: Dockerize the app 2026-03-20 23:39:49 +01:00
README.md feat: Group similar events into issues and throttle notifications 2026-09-01 15:44:36 +02:00

Mado

A lightweight, self-hosted error tracking tool.

Quick Start

uv sync
uv run python manage.py migrate
uv run python manage.py seed        # optional: load sample data
uv run python manage.py runserver

Open http://localhost:8000.

Features

  • Projects — create, configure, delete projects; each gets a unique DSN key
  • Event Ingestion — POST structured error payloads via the /api/events/store/ endpoint
  • Issue Grouping — similar events are fingerprinted (exception type + culprit + in-app frames) and rolled up into one issue with an occurrence count
  • Issue Browser — filter by status, level, full-text search; HTMX-powered live filtering
  • Issue Detail — tabbed view of stack trace, tags, context, request data, user info, extras, SDK info; jump between occurrences
  • Stack Traces — collapsible frames with source context, highlighted error lines
  • Status Management — resolve, ignore, reopen issues; single or bulk actions
  • Notification Throttling — one email per issue per cooldown window (MADO_NOTIFICATION_COOLDOWN_MINUTES, default 30), plus an immediate alert when a resolved issue regresses
  • Tags — auto-extracted (environment, release, level, etc.) plus custom tags
  • Database Agnostic — works with SQLite, PostgreSQL, MySQL, and any Django-supported backend

Development

# Run tests
uv run python manage.py test

# Type checking
uv run mypy projects events mado

# Create superuser for Django admin
uv run python manage.py createsuperuser