# Notify Bridge A generic bridge between service providers and notification targets. Notify Bridge monitors services (like Immich photo servers) for changes and dispatches notifications to configurable targets (Telegram, webhooks) using customizable templates. ## Architecture - **Service Providers** — Connectors to external services (Immich, more coming) - **Trackers** — Monitor specific collections within a provider for changes - **Tracking Configs** — Define what events to watch for and scheduling rules - **Notification Targets** — Where to send notifications (Telegram chats, webhook URLs) - **Template Configs** — Jinja2 templates that format notifications per provider type ## Project Structure ``` packages/ core/ — Shared library: providers, models, notifications, templates server/ — FastAPI REST server with SQLite database frontend/ — SvelteKit dashboard (Svelte 5, Tailwind CSS v4) ``` ## Quick Docker Deploy ```bash docker run -d \ --name notify-bridge \ --restart unless-stopped \ -p 8420:8420 \ -v notify-bridge-data:/data \ -e NOTIFY_BRIDGE_SECRET_KEY=$(openssl rand -hex 32) \ git.dolgolyov-family.by/alexei.dolgolyov/notify-bridge:latest ``` Then open `http://localhost:8420` in your browser. ### Environment Variables | Variable | Required | Default | Description | | -------- | -------- | ------- | ----------- | | `NOTIFY_BRIDGE_SECRET_KEY` | Yes | — | Secret key for JWT tokens (min 32 chars) | | `NOTIFY_BRIDGE_PORT` | No | `8420` | Server listen port | | `NOTIFY_BRIDGE_CORS_ALLOWED_ORIGINS` | No | `*` | Comma-separated allowed CORS origins | | `NOTIFY_BRIDGE_DEBUG` | No | `false` | Enable debug logging | ### Docker Compose ```yaml services: notify-bridge: image: git.dolgolyov-family.by/alexei.dolgolyov/notify-bridge:latest container_name: notify-bridge restart: unless-stopped ports: - "8420:8420" volumes: - notify-bridge-data:/data environment: - NOTIFY_BRIDGE_SECRET_KEY=your-secret-key-min-32-characters volumes: notify-bridge-data: ``` ## Quick Start (Development) ```bash # Backend cd packages/server pip install -e . NOTIFY_BRIDGE_DATA_DIR=./test-data NOTIFY_BRIDGE_SECRET_KEY=your-secret-key-min-32chars \ python -m uvicorn notify_bridge_server.main:app --host 0.0.0.0 --port 8420 # Frontend cd frontend npm install npm run dev ``` ## Supported Providers - **Immich** — Photo/video server with album change detection