Lightweight Sentry alternative
- Python 53.6%
- HTML 31.7%
- CSS 14%
- Dockerfile 0.5%
- Shell 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Push Docker Image / push (push) Successful in 4m5s
Reviewed-on: #7 |
||
| .forgejo/workflows | ||
| .zed | ||
| examples | ||
| mado | ||
| AGENTS.md | ||
| README.md | ||
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