Prototype for a camera monitoring system with a Go backend, WebSocket updates, and a small browser dashboard.
The repository is structured to keep camera ingestion, detection, queueing, encryption, and frontend display separate. It is useful as a starting point for real-time video processing work.
- Go backend with HTTP and WebSocket routes
- Camera feed abstraction for RTSP/IP camera sources
- Placeholder detection layer for face/object recognition
- Frontend dashboard for live updates
- Docker setup with Redis and PostgreSQL
- Utility package for logging, benchmarking, and encryption work
- Go
- WebSockets
- PostgreSQL
- Redis
- Docker Compose
- HTML, CSS, JavaScript
.
├── backend/
│ ├── camera.go
│ ├── detector.go
│ ├── embeddings.go
│ ├── queue.go
│ ├── websocket.go
│ └── utils/
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── frontend/
├── go.mod
└── README.md
cp .env.example .env
docker compose -f docker/docker-compose.yml up --buildOpen:
http://localhost:8080
go run ./backendBy default the app uses a local webcam source:
CAMERA_URL=0
For an IP camera, set CAMERA_URL in .env or your shell.
- Real camera processing with GoCV requires OpenCV and GoCV installed on the host or inside the container.
- The current detection layer is intentionally stubbed so the project can be extended step by step.
- Do not commit real camera URLs, usernames, passwords, or encryption keys.
- Connect a real RTSP camera stream through GoCV.
- Add frame-level detection and event publishing.
- Store detection metadata without saving raw camera frames.
- Add dashboard filters for camera, time range, and event type.