Skip to content

Repository files navigation

Notica

License: MIT Docker Python React

A centralized alert & notification system for backup jobs. Backup scripts on any server just send a single HTTP request — Notica handles the rest: storing history, showing a dashboard, firing immediate alerts on failure, and sending periodic digest reports over Microsoft Teams.


Features

  • Job Registry — register jobs ahead of time with an expected cron schedule; Notica detects overdue jobs proactively, even before a script ever reports back
  • Alert Ingestion — backup scripts report a result via a single HTTP POST with a per-job token
  • Immediate Mode — an Adaptive Card lands in Teams within seconds of a job failing or warning
  • Digest Mode — cron-scheduled summary reports instead of spamming every single alert
  • Dashboard — Job Board, Alert History, Analytics (success rate, health by environment, duration trend), Schedule Manager, Contact Manager, Settings
  • Multi-language — English/Vietnamese UI, switchable per page, defaults to English
  • Optional SSO — connects to an external Keycloak OIDC instance; off by default, no Keycloak required to run Notica

Quick Start

mkdir -p ~/notica && cd ~/notica
curl -O https://raw.githubusercontent.com/yourname/notica/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/yourname/notica/main/.env.example
cp .env.example .env && nano .env   # set POSTGRES_PASSWORD and APP_URL

docker compose pull
docker compose up -d

Open http://<server-ip> once containers are healthy (docker compose ps). Full walkthrough, all env vars, and end-to-end setup (Teams contact → job registration → script integration): see the Docs site below.


Architecture

Backup Scripts (bash / python / ansible / cron)
        │
        │  POST /api/v1/alerts
        ▼
┌────────────────────────────────────────────────────────────┐
│                        NOTICA                              │
│  ┌─────────────────┐  ┌─────────────────┐  ┌───────────┐ │
│  │  Ingestion API  │  │    Web API      │  │ Scheduler │ │
│  │  Validate       │  │  Jobs/Alerts/   │  │ Digest    │ │
│  │  Store + Notify │  │  Schedules/     │  │ Overdue   │ │
│  │                 │  │  Contacts CRUD  │  │ Retention │ │
│  └────────┬────────┘  └────────┬────────┘  └─────┬─────┘ │
│           └──────────┬─────────┘                 │       │
│                      ▼                           │       │
│  ┌─────────────────────────────────────────────────┐    │
│  │  PostgreSQL 16 — jobs · alerts · schedules ·     │    │
│  │  contacts · schedule_executions · settings ·     │    │
│  │  audit_logs                                      │    │
│  └─────────────────────┬───────────────────────────┘    │
│                         ▼                                │
│  ┌─────────────────────────────────────────────────┐    │
│  │  Notification Engine — Immediate mode +          │    │
│  │  Digest mode                                     │    │
│  └─────────────────────────────────────────────────┘    │
└────────────────────────────────────────────────────────────┘
        │
        ▼
Teams Workflows Webhook (Adaptive Cards v1.2)
Layer Technology
Backend Python 3.12 + FastAPI (async)
ORM / Migrations SQLAlchemy 2.0 async + Alembic
Scheduler APScheduler 3.x — embedded, no Redis/Celery required
Database PostgreSQL 16
Frontend React 18 + TypeScript + Vite, shadcn/ui + Tailwind
Serve Nginx — /api/* → FastAPI, /* → React SPA
Notification Teams Workflows Webhook, Adaptive Cards v1.2

Documentation

Full guide (English/Vietnamese), served from the app itself:

Doc What's there
Docs site Landing page — start here
→ Installation Full env var reference
→ Registering Jobs Job fields, tokens
→ Sending Alerts Bash/Python/Ansible integration examples, API reference
→ Immediate Notifications Setting up a Teams contact
→ Digest & Schedules Periodic report setup
→ SSO / Keycloak Setup Full Keycloak client config
→ Upgrade Guide Migration steps, breaking changes per version
CHANGELOG.md Version-by-version change history
CONTRIBUTING.md Dev setup, coding conventions, PR process

(links left empty on purpose — fill in with the real docs-site URL once it's deployed)


Contributing

Contributions are welcome — from bug reports to pull requests. See CONTRIBUTING.md to get started.

License

MIT © Notica Contributors

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages