# dorukkumkumoglu/optocamzero architecture

> Architecture diagram of the GitHub repository dorukkumkumoglu/optocamzero, 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/dorukkumkumoglu/optocamzero
- Repository: https://github.com/dorukkumkumoglu/optocamzero

## Overview

Optocam Zero is a Raspberry Pi Zero pocket camera, combining printable hardware with an on-device camera application and a Wi-Fi gallery. The main user workflow is to operate camera controls, preview and capture images or GIFs, save media, then browse or transfer it from a phone or computer over the hotspot. The graph also preserves the documented filter, playback, and hardware-build capabilities. Some subsystem links rely on README descriptions and the file tree; unsampled implementation details are not expanded.

Main entry points: [`software/firmware-buildroot/src/optocam_app.cpp`](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_app.cpp) (Camera application), [`software/firmware-buildroot/overlay/usr/share/optocam/gallery_server.py`](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/usr/share/optocam/gallery_server.py) (Gallery server), [`software/firmware-buildroot/src/optocam_hud.h`](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_hud.h) (HUD and filters), [`software/firmware-buildroot/overlay/etc/init.d/S90wifi`](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/etc/init.d/S90wifi) (Wi-Fi hotspot)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_camera["Camera runtime"]
  node_camera_app["Camera application<br/>[optocam_app.cpp]"]
  node_preview["Live preview"]
  node_controls["Camera controls<br/>[optocam_app.cpp]"]
end

subgraph group_media["Media and interface"]
  node_photo_store[("Photo storage")]
  node_hud["HUD and filters<br/>[optocam_hud.h]"]
  node_render["Image rendering<br/>[optocam_render.h]"]
  node_gif["GIF encode and playback<br/>[optocam_gif.h]"]
  node_calibration["Filter calibration assets"]
end

subgraph group_connectivity["Hotspot and gallery"]
  node_gallery["Gallery server<br/>[gallery_server.py]"]
  node_hotspot["Wi-Fi hotspot<br/>[S90wifi]"]
  node_custom_effects[("Custom filter settings<br/>[gallery_server.py]")]
end

subgraph group_device["Device and hardware"]
  node_splash["Startup splash<br/>[optocam_splash.c]"]
  node_firmware["Buildroot device image"]
  node_hardware["Printable camera hardware"]
end

node_user(("Camera user"))
node_camera_sensor["Autofocus camera"]
node_display["Camera display"]
node_client(("Phone or computer"))
node_builder(("Device builder"))

node_user -->|"operates"| node_controls
node_controls -->|"signals"| node_camera_app
node_camera_sensor -->|"captures frames"| node_camera_app
node_camera_app -->|"controls autofocus"| node_camera_sensor
node_camera_app -->|"draws preview and UI"| node_display
node_camera_app -->|"saves photos and GIFs"| node_photo_store
node_camera_app -->|"uses UI and filters"| node_hud
node_hud -->|"draws interface"| node_render
node_camera_app -->|"renders images"| node_render
node_camera_app -->|"encodes and decodes"| node_gif
node_camera_app -->|"loads filter assets"| node_calibration
node_gallery -->|"reads and manages media"| node_photo_store
node_client -->|"connects over Wi-Fi"| node_hotspot
node_hotspot -->|"enables access"| node_gallery
node_client -->|"browses and transfers"| node_gallery
node_client -->|"edits filters"| node_custom_effects
node_gallery -->|"reads and writes"| node_custom_effects
node_camera_app -->|"loads filter settings"| node_custom_effects
node_firmware -->|"provides runtime"| node_camera_app
node_splash -->|"shows startup image"| node_display
node_builder -->|"builds enclosure"| node_hardware

click node_camera_app "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_app.cpp"
click node_preview "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_preview.cpp"
click node_controls "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_app.cpp"
click node_photo_store "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/home/dkumkum/photos"
click node_splash "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_splash.c"
click node_hud "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_hud.h"
click node_render "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_render.h"
click node_gif "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_gif.h"
click node_calibration "https://github.com/dorukkumkumoglu/optocamzero/tree/main/software/firmware-buildroot/overlay/usr/share/optocam"
click node_gallery "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/usr/share/optocam/gallery_server.py"
click node_hotspot "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/etc/init.d/S90wifi"
click node_custom_effects "https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/usr/share/optocam/gallery_server.py"
click node_firmware "https://github.com/dorukkumkumoglu/optocamzero/tree/main/software/firmware-buildroot"
click node_hardware "https://github.com/dorukkumkumoglu/optocamzero/tree/main/hardware"

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_app,node_preview,node_controls,node_user toneBlue
class node_photo_store,node_hud,node_render,node_gif,node_calibration toneAmber
class node_gallery,node_hotspot,node_custom_effects toneMint
class node_splash,node_firmware,node_hardware toneRose
class node_camera_sensor,node_display,node_client,node_builder toneIndigo
```

## Components

### Camera runtime

- [Camera application](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_app.cpp): `software/firmware-buildroot/src/optocam_app.cpp`
- [Live preview](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_preview.cpp): `software/firmware-buildroot/src/optocam_preview.cpp`
- [Camera controls](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_app.cpp): `software/firmware-buildroot/src/optocam_app.cpp`

### Media and interface

- [Photo storage](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/home/dkumkum/photos): `software/firmware-buildroot/overlay/home/dkumkum/photos`
- [HUD and filters](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_hud.h): `software/firmware-buildroot/src/optocam_hud.h`
- [Image rendering](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_render.h): `software/firmware-buildroot/src/optocam_render.h`
- [GIF encode and playback](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_gif.h): `software/firmware-buildroot/src/optocam_gif.h`
- [Filter calibration assets](https://github.com/dorukkumkumoglu/optocamzero/tree/main/software/firmware-buildroot/overlay/usr/share/optocam): `software/firmware-buildroot/overlay/usr/share/optocam`

### Hotspot and gallery

- [Gallery server](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/usr/share/optocam/gallery_server.py): `software/firmware-buildroot/overlay/usr/share/optocam/gallery_server.py`
- [Wi-Fi hotspot](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/etc/init.d/S90wifi): `software/firmware-buildroot/overlay/etc/init.d/S90wifi`
- [Custom filter settings](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/overlay/usr/share/optocam/gallery_server.py): `software/firmware-buildroot/overlay/usr/share/optocam/gallery_server.py`

### Device and hardware

- [Startup splash](https://github.com/dorukkumkumoglu/optocamzero/blob/main/software/firmware-buildroot/src/optocam_splash.c): `software/firmware-buildroot/src/optocam_splash.c`
- [Buildroot device image](https://github.com/dorukkumkumoglu/optocamzero/tree/main/software/firmware-buildroot): `software/firmware-buildroot`
- [Printable camera hardware](https://github.com/dorukkumkumoglu/optocamzero/tree/main/hardware): `hardware`

### Other components

- **Camera user**
- **Autofocus camera**
- **Camera display**
- **Phone or computer**
- **Device builder**

## Connections

- Camera user → Camera controls: operates
- Camera controls → Camera application: signals
- Autofocus camera → Camera application: captures frames
- Camera application → Autofocus camera: controls autofocus
- Camera application → Camera display: draws preview and UI
- Camera application → Photo storage: saves photos and GIFs
- Camera application → HUD and filters: uses UI and filters
- HUD and filters → Image rendering: draws interface
- Camera application → Image rendering: renders images
- Camera application → GIF encode and playback: encodes and decodes
- Camera application → Filter calibration assets: loads filter assets
- Gallery server → Photo storage: reads and manages media
- Phone or computer → Wi-Fi hotspot: connects over Wi-Fi
- Wi-Fi hotspot → Gallery server: enables access
- Phone or computer → Gallery server: browses and transfers
- Phone or computer → Custom filter settings: edits filters
- Gallery server → Custom filter settings: reads and writes
- Camera application → Custom filter settings: loads filter settings
- Buildroot device image → Camera application: provides runtime
- Startup splash → Camera display: shows startup image
- Device builder → Printable camera hardware: builds enclosure
