# mintythecoder/arduino-security architecture

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

- Interactive diagram: https://gitdiagram.com/mintythecoder/arduino-security
- Repository: https://github.com/mintythecoder/arduino-security

## Overview

The repository is a work-in-progress Arduino classroom security project, but the README does not describe its user-facing behavior or system workflow. The visible tree is a mix of ESP32 camera/SD-card sketches and embedded GUI and sensor libraries; no main application sketch is listed. The graph therefore shows these evidenced capability areas without asserting how they are integrated. Source excerpts are partial, so links for unsampled sketch implementations are omitted.

Main entry points: [`GUI Files/ArduinoSecurityGUI/libraries/lvgl/src/extra/others/fragment/lv_fragment_manager.c`](https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/lvgl/src/extra/others/fragment/lv_fragment_manager.c) (Fragment navigation), [`Arduino Documentation/ESP32/C/Sketches/Sketch_07.1_CameraWebServer/app_httpd.cpp`](https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.1_CameraWebServer/app_httpd.cpp) (Camera web server), [`Arduino Documentation/ESP32/C/Sketches/Sketch_07.3_Camera_SDcard/sd_read_write.cpp`](https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.3_Camera_SDcard/sd_read_write.cpp) (SD read/write), [`GUI Files/ArduinoSecurityGUI/libraries/lvgl/src/core/lv_disp.c`](https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/lvgl/src/core/lv_disp.c) (LVGL UI framework)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_camera["Camera sketches"]
  node_camera_web["Camera web server<br/>[app_httpd.cpp]"]
  node_video_web["Video web server<br/>[app_httpd.cpp]"]
  node_camera_sd["Camera SD sketch<br/>[camera_pins.h]"]
  node_tcp_camera["Camera TCP sketch<br/>[camera_pins.h]"]
  node_camera_asset["Camera web UI asset<br/>[camera_index.h]"]
end

subgraph group_storage["Local storage"]
  node_sd_helpers["SD read/write<br/>[sd_read_write.cpp]"]
end

subgraph group_interface["Display interface"]
  node_tft["TFT graphics<br/>[TFT_eSPI.cpp]"]
  node_lvgl["LVGL UI framework<br/>[lv_disp.c]"]
  node_fragment_manager["Fragment navigation"]
  node_fragment_api["Fragment lifecycle API<br/>[lv_fragment.h]"]
end

subgraph group_sensors["Sensor support"]
  node_bmi_api["BMI270 sensor API<br/>[bmi270_context.c]"]
end

node_operator(("Operator"))
node_browser(("Web browser"))
node_sd_card[("SD card")]
node_sensor{{"BMI270 sensor"}}

node_operator -->|"uses"| node_browser
node_browser -->|"requests camera"| node_camera_web
node_camera_web -->|"serves UI asset"| node_camera_asset
node_video_web -->|"streams video"| node_browser
node_camera_sd -->|"uses storage helpers"| node_sd_helpers
node_sd_helpers -->|"reads and writes"| node_sd_card
node_operator -->|"uses display"| node_tft
node_operator -->|"interacts with UI"| node_lvgl
node_fragment_manager -->|"manages fragments"| node_fragment_api
node_fragment_manager -->|"creates UI objects"| node_lvgl
node_bmi_api -->|"accesses sensor"| node_sensor

click node_camera_web "https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.1_CameraWebServer/app_httpd.cpp"
click node_video_web "https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.2_As_VideoWebServer/app_httpd.cpp"
click node_camera_sd "https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.3_Camera_SDcard/camera_pins.h"
click node_tcp_camera "https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_08.1_CameraTcpServer/camera_pins.h"
click node_camera_asset "https://github.com/mintythecoder/arduino-security/blob/main/Project%20Files/CamTest/camera_index.h"
click node_sd_helpers "https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.3_Camera_SDcard/sd_read_write.cpp"
click node_tft "https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/TFT_eSPI/TFT_eSPI.cpp"
click node_lvgl "https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/lvgl/src/core/lv_disp.c"
click node_fragment_manager "https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/lvgl/src/extra/others/fragment/lv_fragment_manager.c"
click node_fragment_api "https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/lvgl/src/extra/others/fragment/lv_fragment.h"
click node_bmi_api "https://github.com/mintythecoder/arduino-security/blob/main/Project%20Files/SecurityCode/libraries/Arduino_BMI270_BMM150/src/utilities/BMI270-Sensor-API/bmi270_context.c"

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_camera_web,node_video_web,node_camera_sd,node_tcp_camera,node_camera_asset,node_browser toneBlue
class node_sd_helpers,node_sd_card toneAmber
class node_tft,node_lvgl,node_fragment_manager,node_fragment_api toneMint
class node_bmi_api toneRose
class node_operator,node_sensor toneIndigo
```

## Components

### Camera sketches

- [Camera web server](https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.1_CameraWebServer/app_httpd.cpp): `Arduino Documentation/ESP32/C/Sketches/Sketch_07.1_CameraWebServer/app_httpd.cpp`
- [Video web server](https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.2_As_VideoWebServer/app_httpd.cpp): `Arduino Documentation/ESP32/C/Sketches/Sketch_07.2_As_VideoWebServer/app_httpd.cpp`
- [Camera SD sketch](https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.3_Camera_SDcard/camera_pins.h): `Arduino Documentation/ESP32/C/Sketches/Sketch_07.3_Camera_SDcard/camera_pins.h`
- [Camera TCP sketch](https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_08.1_CameraTcpServer/camera_pins.h): `Arduino Documentation/ESP32/C/Sketches/Sketch_08.1_CameraTcpServer/camera_pins.h`
- [Camera web UI asset](https://github.com/mintythecoder/arduino-security/blob/main/Project%20Files/CamTest/camera_index.h): `Project Files/CamTest/camera_index.h`

### Local storage

- [SD read/write](https://github.com/mintythecoder/arduino-security/blob/main/Arduino%20Documentation/ESP32/C/Sketches/Sketch_07.3_Camera_SDcard/sd_read_write.cpp): `Arduino Documentation/ESP32/C/Sketches/Sketch_07.3_Camera_SDcard/sd_read_write.cpp`

### Display interface

- [TFT graphics](https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/TFT_eSPI/TFT_eSPI.cpp): `GUI Files/ArduinoSecurityGUI/libraries/TFT_eSPI/TFT_eSPI.cpp`
- [LVGL UI framework](https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/lvgl/src/core/lv_disp.c): `GUI Files/ArduinoSecurityGUI/libraries/lvgl/src/core/lv_disp.c`
- [Fragment navigation](https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/lvgl/src/extra/others/fragment/lv_fragment_manager.c): `GUI Files/ArduinoSecurityGUI/libraries/lvgl/src/extra/others/fragment/lv_fragment_manager.c`
- [Fragment lifecycle API](https://github.com/mintythecoder/arduino-security/blob/main/GUI%20Files/ArduinoSecurityGUI/libraries/lvgl/src/extra/others/fragment/lv_fragment.h): `GUI Files/ArduinoSecurityGUI/libraries/lvgl/src/extra/others/fragment/lv_fragment.h`

### Sensor support

- [BMI270 sensor API](https://github.com/mintythecoder/arduino-security/blob/main/Project%20Files/SecurityCode/libraries/Arduino_BMI270_BMM150/src/utilities/BMI270-Sensor-API/bmi270_context.c): `Project Files/SecurityCode/libraries/Arduino_BMI270_BMM150/src/utilities/BMI270-Sensor-API/bmi270_context.c`

### Other components

- **Operator**
- **Web browser**
- **SD card**
- **BMI270 sensor**

## Connections

- Operator → Web browser: uses
- Web browser → Camera web server: requests camera
- Camera web server → Camera web UI asset: serves UI asset
- Video web server → Web browser: streams video
- Camera SD sketch → SD read/write: uses storage helpers
- SD read/write → SD card: reads and writes
- Operator → TFT graphics: uses display
- Operator → LVGL UI framework: interacts with UI
- Fragment navigation → Fragment lifecycle API: manages fragments
- Fragment navigation → LVGL UI framework: creates UI objects
- BMI270 sensor API → BMI270 sensor: accesses sensor
