Java 21 + Spring Boot 3 + Vaadin 24 video management system with AI-powered theft detection.
- Java 21
- Maven 3.9+
- Docker & Docker Compose
- PostgreSQL 17
- FFmpeg
- Sige 7 (Armsom) for AI inference (optional for initial setup)
A default Super Admin is created on first startup:
- Email:
admin@theftwatch.local - Password:
admin123
# Start infrastructure
docker compose up -d postgres minio
# Run application
mvn spring-boot:runmvn clean package -DskipTests
docker compose up --profile production- Frontend: Vaadin 24 (Java-based UI)
- Backend: Spring Boot 3.3
- Database: PostgreSQL 17 with Flyway migrations
- Storage: MinIO (S3-compatible) for video/recordings
- AI: Sige 7 integration via REST API
- Streaming: FFmpeg RTSP → HLS transcoding
- Super Admin: Full system control, creates Special Admins and End Users
- Special Admin: Manages End User realms/dominions, partial camera setup
- End User: Business-level access to assigned realms/dominions
- Realm: Top-level organizational unit (e.g., "Company A")
- Dominion: Location/branch within a realm (e.g., "Store #1", "Warehouse")
- Camera: RTSP-enabled camera assigned to realm/dominion
- Alert: AI-generated theft detection events
- Multi-camera RTSP streaming
- HLS video delivery for browser playback
- AI-powered theft detection via Sige 7
- Role-based access control (RBAC)
- Realm/Dominion hierarchy for multi-tenant deployments
- Alert management with severity levels
- Docker containerization
src/main/java/com/theftwatch/theftwatch/
├── config/ - App configuration
├── domain/ - JPA entities
├── enums/ - Role, AlertSeverity, CameraStatus
├── repository/ - Spring Data JPA repos
├── service/ - Business logic
├── security/ - Auth & RBAC
├── ai/ - Sige 7 inference
├── streaming/ - FFmpeg RTSP/HLS
└── ui/ - Vaadin views
# Run tests
mvn test
# Package
mvn clean package
# Run
java -jar target/theftwatch-0.1.0.jarProprietary