vigilar/pyproject.toml
Aaron D. Lee 845a85d618 Initial commit: Vigilar DIY home security system
Phase 1 (Foundation): project skeleton, TOML config + Pydantic validation,
MQTT bus wrapper, SQLite schema (9 tables), Click CLI, process supervisor.

Phase 2 (Camera): RTSP capture via OpenCV, MOG2 motion detection with
configurable sensitivity/zones, adaptive FPS recording (2fps idle/30fps
motion) via FFmpeg subprocess, HLS live streaming, pre-motion ring buffer.

Phase 3 (Web UI): Flask + Bootstrap 5 dark theme, 6 blueprints, Jinja2
templates (dashboard, kiosk 2x2 grid, events, sensors, recordings, settings),
PWA with service worker + Web Push, full admin settings UI with config
persistence.

Remote Access: WireGuard tunnel configs, nginx reverse proxy with HLS
caching + rate limiting, bandwidth-optimized remote HLS stream (426x240
@ 500kbps), DO droplet setup script, certbot TLS.

29 tests passing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 23:11:27 -04:00

62 lines
1.2 KiB
TOML

[build-system]
requires = ["setuptools>=69.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "vigilar"
version = "0.1.0"
description = "DIY offline-first home security system"
requires-python = ">=3.11"
license = {text = "MIT"}
dependencies = [
"opencv-python-headless>=4.9.0",
"paho-mqtt>=2.1.0",
"flask>=3.0.0",
"gunicorn>=22.0.0",
"sqlalchemy>=2.0.0",
"alembic>=1.13.0",
"pydantic>=2.7.0",
"pillow>=10.3.0",
"cryptography>=42.0.0",
"click>=8.1.7",
"pynut2>=0.1.0",
"pywebpush>=2.0.0",
"py-vapid>=1.9.0",
]
[project.optional-dependencies]
gpio = [
"gpiozero>=2.0.1",
"RPi.GPIO>=0.7.1",
]
dev = [
"pytest>=8.2.0",
"pytest-cov>=5.0.0",
"mypy>=1.10.0",
"ruff>=0.4.0",
"httpx>=0.27.0",
]
[project.scripts]
vigilar = "vigilar.cli.main:cli"
[tool.setuptools.packages.find]
where = ["."]
include = ["vigilar*"]
[tool.ruff]
target-version = "py311"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP"]
[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["."]
[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true