# karchun0910/smart_survillance_system_quest architecture

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

- Interactive diagram: https://gitdiagram.com/karchun0910/smart_survillance_system_quest
- Repository: https://github.com/karchun0910/smart_survillance_system_quest

## Overview

Smart Surveillance is a control panel and API for camera status, policy rules, observations, and generated events. The visible workflow is operator rule management and status/event review in the frontend; observations enter through the API, are evaluated against enabled rules and cooldowns, and may produce events. The detector or camera-capture path that submits observations is not established by the excerpts, so it is not drawn. Relationships below are limited to shown calls, imports, and frontend requests.

Main entry points: [`Backend/app/api/router.py`](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/router.py) (API router), [`Backend/app/api/routes/observations.py`](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/observations.py) (Observation intake), [`Backend/app/db/session.py`](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/db/session.py) (DB sessions), [`frontend/src/App.tsx`](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/frontend/src/App.tsx) (Control panel)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Operator interface"]
  node_frontend["Control panel<br/>[App.tsx]"]
end

subgraph group_api["API routes"]
  node_app["FastAPI app<br/>[main.py]"]
  node_router["API router<br/>[router.py]"]
  node_health["Health route<br/>[health.py]"]
  node_cameras["Camera status<br/>[cameras.py]"]
  node_rules["Rule management<br/>[rules.py]"]
  node_observations["Observation intake<br/>[observations.py]"]
  node_events["Event listing<br/>[events.py]"]
end

subgraph group_logic["Policy evaluation"]
  node_engine["Policy engine<br/>[policy_engine.py]"]
  node_settings["Configuration<br/>[config.py]"]
end

subgraph group_data["Persistence and schemas"]
  node_dbsession["DB sessions<br/>[session.py]"]
  node_rulemodel[("Policy rules<br/>[policy_rule.py]")]
  node_observationmodel[("Observations<br/>[observation.py]")]
  node_eventmodel[("Events<br/>[event.py]")]
  node_rule_schema["Rule schemas<br/>[policy_rule.py]"]
  node_observation_schema["Observation schemas<br/>[observation.py]"]
  node_event_schema["Event schemas<br/>[event.py]"]
end

node_operator(("Operator"))
node_sql[("SQL database")]

node_operator -->|"uses"| node_frontend
node_frontend -->|"requests status"| node_health
node_frontend -->|"requests status"| node_cameras
node_frontend -->|"manages rules"| node_rules
node_frontend -->|"loads events"| node_events
node_app -->|"mounts"| node_router
node_router -->|"registers"| node_health
node_router -->|"registers"| node_cameras
node_router -->|"registers"| node_rules
node_router -->|"registers"| node_observations
node_router -->|"registers"| node_events
node_observations -->|"evaluates observation"| node_engine
node_engine -->|"queries rules"| node_rulemodel
node_engine -->|"reads observation"| node_observationmodel
node_engine -->|"creates events"| node_eventmodel
node_rules -->|"reads and writes"| node_rulemodel
node_observations -->|"creates and lists"| node_observationmodel
node_observations -->|"validates payload"| node_observation_schema
node_observations -->|"serializes events"| node_event_schema
node_rules -->|"validates responses"| node_rule_schema
node_events -->|"reads events"| node_eventmodel
node_events -->|"serializes events"| node_event_schema
node_rules -->|"uses sessions"| node_dbsession
node_observations -->|"uses sessions"| node_dbsession
node_events -->|"uses sessions"| node_dbsession
node_cameras -->|"uses sessions"| node_dbsession
node_dbsession -->|"gets database URL"| node_settings
node_dbsession -->|"connects"| node_sql

click node_frontend "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/frontend/src/App.tsx"
click node_app "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/main.py"
click node_router "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/router.py"
click node_health "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/health.py"
click node_cameras "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/cameras.py"
click node_rules "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/rules.py"
click node_observations "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/observations.py"
click node_events "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/events.py"
click node_engine "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/services/policy_engine.py"
click node_settings "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/core/config.py"
click node_dbsession "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/db/session.py"
click node_rulemodel "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/models/policy_rule.py"
click node_observationmodel "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/models/observation.py"
click node_eventmodel "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/models/event.py"
click node_rule_schema "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/schemas/policy_rule.py"
click node_observation_schema "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/schemas/observation.py"
click node_event_schema "https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/schemas/event.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_frontend toneBlue
class node_app,node_router,node_health,node_cameras,node_rules,node_observations,node_events,node_sql toneAmber
class node_engine,node_settings toneMint
class node_dbsession,node_rulemodel,node_observationmodel,node_eventmodel,node_rule_schema,node_observation_schema,node_event_schema toneRose
class node_operator toneIndigo
```

## Components

### Operator interface

- [Control panel](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/frontend/src/App.tsx): `frontend/src/App.tsx`

### API routes

- [FastAPI app](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/main.py): `Backend/app/main.py`
- [API router](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/router.py): `Backend/app/api/router.py`
- [Health route](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/health.py): `Backend/app/api/routes/health.py`
- [Camera status](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/cameras.py): `Backend/app/api/routes/cameras.py`
- [Rule management](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/rules.py): `Backend/app/api/routes/rules.py`
- [Observation intake](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/observations.py): `Backend/app/api/routes/observations.py`
- [Event listing](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/api/routes/events.py): `Backend/app/api/routes/events.py`

### Policy evaluation

- [Policy engine](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/services/policy_engine.py): `Backend/app/services/policy_engine.py`
- [Configuration](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/core/config.py): `Backend/app/core/config.py`

### Persistence and schemas

- [DB sessions](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/db/session.py): `Backend/app/db/session.py`
- [Policy rules](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/models/policy_rule.py): `Backend/app/models/policy_rule.py`
- [Observations](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/models/observation.py): `Backend/app/models/observation.py`
- [Events](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/models/event.py): `Backend/app/models/event.py`
- [Rule schemas](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/schemas/policy_rule.py): `Backend/app/schemas/policy_rule.py`
- [Observation schemas](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/schemas/observation.py): `Backend/app/schemas/observation.py`
- [Event schemas](https://github.com/karchun0910/smart_survillance_system_quest/blob/master/Backend/app/schemas/event.py): `Backend/app/schemas/event.py`

### Other components

- **Operator**
- **SQL database**

## Connections

- Operator → Control panel: uses (evidence: `frontend/src/App.tsx`)
- Control panel → Health route: requests status (evidence: `frontend/src/App.tsx`)
- Control panel → Camera status: requests status (evidence: `frontend/src/App.tsx`)
- Control panel → Rule management: manages rules (evidence: `frontend/src/App.tsx`)
- Control panel → Event listing: loads events (evidence: `frontend/src/App.tsx`)
- FastAPI app → API router: mounts (evidence: `Backend/app/main.py`)
- API router → Health route: registers (evidence: `Backend/app/api/router.py`)
- API router → Camera status: registers (evidence: `Backend/app/api/router.py`)
- API router → Rule management: registers (evidence: `Backend/app/api/router.py`)
- API router → Observation intake: registers (evidence: `Backend/app/api/router.py`)
- API router → Event listing: registers (evidence: `Backend/app/api/router.py`)
- Observation intake → Policy engine: evaluates observation (evidence: `Backend/app/api/routes/observations.py`)
- Policy engine → Policy rules: queries rules (evidence: `Backend/app/services/policy_engine.py`)
- Policy engine → Observations: reads observation (evidence: `Backend/app/services/policy_engine.py`)
- Policy engine → Events: creates events (evidence: `Backend/app/services/policy_engine.py`)
- Rule management → Policy rules: reads and writes (evidence: `Backend/app/api/routes/rules.py`)
- Observation intake → Observations: creates and lists (evidence: `Backend/app/api/routes/observations.py`)
- Observation intake → Observation schemas: validates payload (evidence: `Backend/app/api/routes/observations.py`)
- Observation intake → Event schemas: serializes events (evidence: `Backend/app/api/routes/observations.py`)
- Rule management → Rule schemas: validates responses (evidence: `Backend/app/api/routes/rules.py`)
- Event listing → Events: reads events (evidence: `Backend/app/api/routes/events.py`)
- Event listing → Event schemas: serializes events (evidence: `Backend/app/api/routes/events.py`)
- Rule management → DB sessions: uses sessions (evidence: `Backend/app/api/routes/rules.py`)
- Observation intake → DB sessions: uses sessions (evidence: `Backend/app/api/routes/observations.py`)
- Event listing → DB sessions: uses sessions (evidence: `Backend/app/api/routes/events.py`)
- Camera status → DB sessions: uses sessions (evidence: `Backend/app/api/routes/cameras.py`)
- DB sessions → Configuration: gets database URL (evidence: `Backend/app/db/session.py`)
- DB sessions → SQL database: connects (evidence: `Backend/app/db/session.py`)
