# sor3nt/flipper-zero-esp32-port architecture

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

- Interactive diagram: https://gitdiagram.com/sor3nt/flipper-zero-esp32-port
- Repository: https://github.com/sor3nt/flipper-zero-esp32-port

## Overview

This repository is a Flipper Zero firmware port for ESP32 boards, combining device applications and services with hardware-backed storage. A typical user selects an application, interacts with its UI, and gets a device or file operation. The supplied tree shows several application families and storage integrations, but the sampled source is mostly storage code; links between unsampled application internals and hardware are therefore omitted. The README excerpt documents broader wireless capabilities whose implementation paths are not present in this tree.

Main entry points: [`applications/services/storage/storage_external_api.c`](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/storage/storage_external_api.c) (Storage API), [`components/storage/storage.c`](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/components/storage/storage.c) (Storage service), [`applications/services/rpc/rpc_storage.c`](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/rpc/rpc_storage.c) (RPC storage), [`applications/system/js_app/modules/js_storage.c`](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/system/js_app/modules/js_storage.c) (JavaScript storage)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_apps["Device apps"]
  node_archive["File archive<br/>[archive.c]"]
  node_badusb["Bad USB<br/>[bad_usb_app.c]"]
  node_blespam["BLE tools<br/>[ble_spam_app.c]"]
  node_espnow["ESP-NOW mesh<br/>[esp_now_app.c]"]
  node_gpio["GPIO tools<br/>[gpio_app.c]"]
  node_ibutton["iButton<br/>[ibutton.c]"]
  node_infrared["Infrared<br/>[infrared_app.c]"]
  node_doom["Doom game<br/>[doom_app.c]"]
  node_wolf3d["Wolf3D game<br/>[wolf3d_storage.cpp]"]
end

subgraph group_storage["Storage service"]
  node_storageapi["Storage API"]
  node_storage["Storage service<br/>[storage.c]"]
  node_sdcard[("SD filesystem<br/>[storage_ext.c]")]
end

subgraph group_integrations["Storage clients"]
  node_rpc["RPC storage<br/>[rpc_storage.c]"]
  node_jsstorage["JavaScript storage<br/>[js_storage.c]"]
  node_animation["Animation loader"]
  node_wolfadapter["Game file adapter<br/>[wolf3d_storage.cpp]"]
end

node_user(("Device user"))

node_user -->|"uses"| node_archive
node_user -->|"uses"| node_badusb
node_user -->|"uses"| node_blespam
node_user -->|"uses"| node_espnow
node_user -->|"uses"| node_gpio
node_user -->|"uses"| node_ibutton
node_user -->|"uses"| node_infrared
node_user -->|"plays"| node_doom
node_storageapi -->|"dispatches"| node_storage
node_storage -->|"accesses"| node_sdcard
node_rpc -->|"calls"| node_storageapi
node_jsstorage -->|"calls"| node_storageapi
node_animation -->|"reads"| node_storageapi
node_wolfadapter -->|"calls"| node_storageapi
node_user -->|"plays"| node_wolf3d

click node_archive "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/archive/archive.c"
click node_badusb "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/bad_usb/bad_usb_app.c"
click node_blespam "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/ble_spam/ble_spam_app.c"
click node_espnow "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/esp_now/esp_now_app.c"
click node_gpio "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/gpio/gpio_app.c"
click node_ibutton "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/ibutton/ibutton.c"
click node_infrared "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/infrared/infrared_app.c"
click node_doom "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/doom/doom_app.c"
click node_wolf3d "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/wolf3d/wolf3d_storage.cpp"
click node_storageapi "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/storage/storage_external_api.c"
click node_storage "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/components/storage/storage.c"
click node_sdcard "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/storage/storages/storage_ext.c"
click node_rpc "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/rpc/rpc_storage.c"
click node_jsstorage "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/system/js_app/modules/js_storage.c"
click node_animation "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/desktop/animations/animation_storage.c"
click node_wolfadapter "https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/wolf3d/wolf3d_storage.cpp"

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_archive,node_badusb,node_blespam,node_espnow,node_gpio,node_ibutton,node_infrared,node_doom,node_wolf3d,node_user toneBlue
class node_storageapi,node_storage,node_sdcard toneAmber
class node_rpc,node_jsstorage,node_animation,node_wolfadapter toneMint
```

## Components

### Device apps

- [File archive](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/archive/archive.c): `applications/main/archive/archive.c`
- [Bad USB](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/bad_usb/bad_usb_app.c): `applications/main/bad_usb/bad_usb_app.c`
- [BLE tools](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/ble_spam/ble_spam_app.c): `applications/main/ble_spam/ble_spam_app.c`
- [ESP-NOW mesh](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/esp_now/esp_now_app.c): `applications/main/esp_now/esp_now_app.c`
- [GPIO tools](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/gpio/gpio_app.c): `applications/main/gpio/gpio_app.c`
- [iButton](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/ibutton/ibutton.c): `applications/main/ibutton/ibutton.c`
- [Infrared](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/infrared/infrared_app.c): `applications/main/infrared/infrared_app.c`
- [Doom game](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/doom/doom_app.c): `applications/main/doom/doom_app.c`
- [Wolf3D game](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/wolf3d/wolf3d_storage.cpp): `applications/main/wolf3d/wolf3d_storage.cpp`

### Storage service

- [Storage API](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/storage/storage_external_api.c): `applications/services/storage/storage_external_api.c`
- [Storage service](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/components/storage/storage.c): `components/storage/storage.c`
- [SD filesystem](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/storage/storages/storage_ext.c): `applications/services/storage/storages/storage_ext.c`

### Storage clients

- [RPC storage](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/rpc/rpc_storage.c): `applications/services/rpc/rpc_storage.c`
- [JavaScript storage](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/system/js_app/modules/js_storage.c): `applications/system/js_app/modules/js_storage.c`
- [Animation loader](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/services/desktop/animations/animation_storage.c): `applications/services/desktop/animations/animation_storage.c`
- [Game file adapter](https://github.com/sor3nt/flipper-zero-esp32-port/blob/main/applications/main/wolf3d/wolf3d_storage.cpp): `applications/main/wolf3d/wolf3d_storage.cpp`

### Other components

- **Device user**

## Connections

- Device user → File archive: uses
- Device user → Bad USB: uses
- Device user → BLE tools: uses
- Device user → ESP-NOW mesh: uses
- Device user → GPIO tools: uses
- Device user → iButton: uses
- Device user → Infrared: uses
- Device user → Doom game: plays
- Storage API → Storage service: dispatches
- Storage service → SD filesystem: accesses
- RPC storage → Storage API: calls
- JavaScript storage → Storage API: calls
- Animation loader → Storage API: reads
- Game file adapter → Storage API: calls
- Device user → Wolf3D game: plays
