This repository has been archived on 2026-06-18. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Ivo Oskamp 0ddeaf1896 Add migration for performance indexes
The indexes defined in models.py __table_args__ are not automatically
created by the custom migration system. Added migrate_performance_indexes()
to explicitly create the indexes at startup.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 21:54:27 +01:00
containers/backupchecks Add migration for performance indexes 2026-02-04 21:54:27 +01:00
deploy Auto-commit local changes before build (2026-01-01 16:09:56) 2026-01-01 16:09:56 +01:00
docs Add migration for performance indexes 2026-02-04 21:54:27 +01:00
.gitignore Auto-commit local changes before build (2026-01-01 16:09:56) 2026-01-01 16:09:56 +01:00
.last-branch Auto-commit local changes before build (2026-02-04 21:46:27) 2026-02-04 21:46:27 +01:00
build-and-push.sh Auto-commit local changes before build (2026-01-01 16:40:37) 2026-01-01 16:40:37 +01:00
LICENSE Auto-commit local changes before build (2026-01-01 16:09:56) 2026-01-01 16:09:56 +01:00
README.md Add README documentation and Claude changelog 2026-02-04 21:30:53 +01:00
version.txt Release v0.1.20 on branch v20260113-08-vspc-object-linking-normalize (bump type 1) 2026-01-13 16:43:25 +01:00

BackupChecks

A backup monitoring and compliance application designed for Managed Service Providers (MSPs) and IT departments.

Features

Mail Ingestion & Parsing

  • Automated email import from Microsoft Graph API (Office 365)
  • Supports 11 backup software platforms:
    • Veeam (including SOBR capacity monitoring)
    • Synology
    • QNAP
    • Nakivo
    • Syncovery
    • Boxafe
    • R-Drive
    • 3CX
    • NTFS Auditing
    • And more
  • Intelligent email parsing extracts backup metadata
  • Raw EML storage for debugging with configurable retention

Backup Job Tracking

  • Dashboard with daily backup job status summaries
  • Expected vs. actual job runs based on schedules
  • Missed backup detection
  • Status tracking: Success, Warning, Error, Missed
  • Timezone-aware calculations (defaults to Europe/Amsterdam)

Run Checks & Review Workflow

  • Manual review interface for backup failures
  • Mark runs as "reviewed"
  • Approval workflow for backup email processing
  • Storage capacity monitoring
  • Autotask PSA ticket integration

Override Rules

  • Exception rules at global or job-level
  • Matching criteria: status, error message patterns
  • Validity windows for temporary overrides

Multi-Customer Management

  • Organize jobs by customer
  • Autotask company mapping
  • Customer-scoped reporting and permissions

Tickets & Remarks

  • Internal ticket system for backup issues
  • Automatic linking to affected job runs
  • Scope-based ticket resolution
  • Feedback/feature request board

Reporting & Analytics

  • Snapshot-based reporting with configurable periods
  • Historical success rates and trend analysis
  • CSV export functionality

Autotask Integration

  • Create PSA tickets from failed backup runs
  • Link internal tickets to Autotask
  • Deep links back to BackupChecks

User Management

  • Role-based access control (admin, viewer, custom roles)
  • Theme preferences (light/dark/auto)
  • In-app news/announcements

Technology Stack

Backend:

  • Flask 3.0.3 (Python)
  • SQLAlchemy with PostgreSQL 16
  • Flask-Login for authentication
  • Gunicorn server

Frontend:

  • Jinja2 templates (server-side rendering)
  • Bootstrap-based responsive UI
  • JavaScript/AJAX for dynamic interactions

Infrastructure:

  • Docker containerized
  • PostgreSQL database
  • Adminer for database management

Project Structure

backupchecks/
├── containers/backupchecks/
│   ├── Dockerfile
│   ├── requirements.txt
│   └── src/
│       ├── backend/app/
│       │   ├── main.py          # Entry point
│       │   ├── models.py        # Database models
│       │   ├── parsers/         # Backup software parsers
│       │   ├── integrations/    # Autotask integration
│       │   └── main/            # Route handlers
│       ├── templates/           # Jinja2 templates
│       └── static/              # CSS, JS, assets
├── deploy/
│   └── backupchecks-stack.yml   # Docker Compose
└── docs/                        # Documentation

Deployment

The application runs as a Docker stack in Portainer.

Configuration

Key settings are managed via the web interface under Settings:

  • Mail import configuration (Microsoft Graph API)
  • Autotask integration credentials
  • Timezone settings
  • User management

License

See LICENSE file.