# kanish-045/cctv architecture

> Architecture diagram of the GitHub repository kanish-045/cctv, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kanish-045/cctv
- Repository: https://github.com/kanish-045/cctv

## Overview

This repository implements a home-surveillance application with a React interface, a Spring backend, and a small Flask camera-registration service. The apparent user workflow is account access followed by camera and alert management; the tree also shows dashboard, camera-form, and alert-table UI components. Sampled backend code confirms authentication, camera CRUD and heartbeat handling, alert storage, and camera registration/removal calls. The README is minimal, and frontend API wiring and alert-generation behavior were not sampled, so those connections are not asserted.

Main entry points: [`frontend/frontend/src/App.jsx`](https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/App.jsx) (Routes), [`cctvBackend/src/main/java/cctv_backend/demo/service/CameraService.java`](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/CameraService.java) (Camera service), [`cctvBackend/src/main/java/cctv_backend/demo/controller/CameraController.java`](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/controller/CameraController.java) (Camera API), [`cctvBackend/src/main/java/cctv_backend/demo/service/UserService.java`](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/UserService.java) (User service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web interface"]
  node_app["Routes<br/>[App.jsx]"]
  node_login_page["Login page<br/>[Login.jsx]"]
  node_register_page["Registration page<br/>[Register.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_camera_form["Camera form<br/>[AddCamera.jsx]"]
  node_alert_table["Alert table<br/>[AlertTable.jsx]"]
  node_navbar["Navigation<br/>[Navbar.jsx]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_backend_api["Backend API"]
  node_auth_controller["Authentication API"]
  node_camera_controller["Camera API"]
  node_alert_controller["Alert API"]
end

subgraph group_domain_services["Domain services"]
  node_user_service["User service<br/>[UserService.java]"]
  node_camera_service["Camera service<br/>[CameraService.java]"]
  node_alert_service["Alert service<br/>[AlertService.java]"]
  node_user_store[("User records")]
  node_camera_store[("Camera records")]
  node_alert_store[("Alert records")]
end

subgraph group_camera_integration["Camera integration"]
  node_ai_client["AI service client<br/>[AIService.java]"]
  node_python_service["Camera registration service<br/>[server.py]"]
end

node_home_user(("Home user"))
node_browser(("Browser"))
node_camera_device(("Camera device"))

node_home_user -->|"uses"| node_browser
node_browser -->|"opens"| node_app
node_app -->|"routes"| node_login_page
node_app -->|"routes"| node_register_page
node_app -->|"routes"| node_dashboard
node_auth_controller -->|"calls"| node_user_service
node_user_service -->|"reads/writes"| node_user_store
node_camera_controller -->|"calls"| node_camera_service
node_camera_service -->|"reads/writes"| node_camera_store
node_camera_service -->|"calls"| node_ai_client
node_ai_client -->|"registers/removes"| node_python_service
node_camera_device -->|"sends heartbeat"| node_camera_controller
node_alert_controller -->|"calls"| node_alert_service
node_alert_service -->|"reads/writes"| node_alert_store

click node_app "https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/App.jsx"
click node_login_page "https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/pages/Login.jsx"
click node_register_page "https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/pages/Register.jsx"
click node_dashboard "https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/pages/Dashboard.jsx"
click node_camera_form "https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/components/AddCamera.jsx"
click node_alert_table "https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/components/AlertTable.jsx"
click node_navbar "https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/components/Navbar.jsx"
click node_api_client "https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/services/api.js"
click node_auth_controller "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/controller/AuthController.java"
click node_camera_controller "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/controller/CameraController.java"
click node_alert_controller "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/controller/AlertController.java"
click node_user_service "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/UserService.java"
click node_camera_service "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/CameraService.java"
click node_alert_service "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/AlertService.java"
click node_user_store "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/repository/UserRepository.java"
click node_camera_store "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/repository/CameraRepository.java"
click node_alert_store "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/repository/AlertRepository.java"
click node_ai_client "https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/AIService.java"
click node_python_service "https://github.com/kanish-045/cctv/blob/main/python/server.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_login_page,node_register_page,node_dashboard,node_camera_form,node_alert_table,node_navbar,node_api_client,node_home_user,node_browser toneBlue
class node_auth_controller,node_camera_controller,node_alert_controller toneAmber
class node_user_service,node_camera_service,node_alert_service,node_user_store,node_camera_store,node_alert_store toneMint
class node_ai_client,node_python_service toneRose
class node_camera_device toneIndigo
```

## Components

### Web interface

- [Routes](https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/App.jsx): `frontend/frontend/src/App.jsx`
- [Login page](https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/pages/Login.jsx): `frontend/frontend/src/pages/Login.jsx`
- [Registration page](https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/pages/Register.jsx): `frontend/frontend/src/pages/Register.jsx`
- [Dashboard](https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/pages/Dashboard.jsx): `frontend/frontend/src/pages/Dashboard.jsx`
- [Camera form](https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/components/AddCamera.jsx): `frontend/frontend/src/components/AddCamera.jsx`
- [Alert table](https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/components/AlertTable.jsx): `frontend/frontend/src/components/AlertTable.jsx`
- [Navigation](https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/components/Navbar.jsx): `frontend/frontend/src/components/Navbar.jsx`
- [API client](https://github.com/kanish-045/cctv/blob/main/frontend/frontend/src/services/api.js): `frontend/frontend/src/services/api.js`

### Backend API

- [Authentication API](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/controller/AuthController.java): `cctvBackend/src/main/java/cctv_backend/demo/controller/AuthController.java`
- [Camera API](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/controller/CameraController.java): `cctvBackend/src/main/java/cctv_backend/demo/controller/CameraController.java`
- [Alert API](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/controller/AlertController.java): `cctvBackend/src/main/java/cctv_backend/demo/controller/AlertController.java`

### Domain services

- [User service](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/UserService.java): `cctvBackend/src/main/java/cctv_backend/demo/service/UserService.java`
- [Camera service](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/CameraService.java): `cctvBackend/src/main/java/cctv_backend/demo/service/CameraService.java`
- [Alert service](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/AlertService.java): `cctvBackend/src/main/java/cctv_backend/demo/service/AlertService.java`
- [User records](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/repository/UserRepository.java): `cctvBackend/src/main/java/cctv_backend/demo/repository/UserRepository.java`
- [Camera records](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/repository/CameraRepository.java): `cctvBackend/src/main/java/cctv_backend/demo/repository/CameraRepository.java`
- [Alert records](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/repository/AlertRepository.java): `cctvBackend/src/main/java/cctv_backend/demo/repository/AlertRepository.java`

### Camera integration

- [AI service client](https://github.com/kanish-045/cctv/blob/main/cctvBackend/src/main/java/cctv_backend/demo/service/AIService.java): `cctvBackend/src/main/java/cctv_backend/demo/service/AIService.java`
- [Camera registration service](https://github.com/kanish-045/cctv/blob/main/python/server.py): `python/server.py`

### Other components

- **Home user**
- **Browser**
- **Camera device**

## Connections

- Home user → Browser: uses
- Browser → Routes: opens
- Routes → Login page: routes
- Routes → Registration page: routes
- Routes → Dashboard: routes
- Authentication API → User service: calls
- User service → User records: reads/writes
- Camera API → Camera service: calls
- Camera service → Camera records: reads/writes
- Camera service → AI service client: calls
- AI service client → Camera registration service: registers/removes
- Camera device → Camera API: sends heartbeat
- Alert API → Alert service: calls
- Alert service → Alert records: reads/writes
