High-Level Architecture Design Specification

This document defines the high-level system architecture for the ESP32 Template, including component interactions, layering, and integration patterns.

Overview

Design Specification: ESP32 Template Layered Architecture SPEC_ARCH_LAYERS_1
status: approved
tags: architecture, layering
links outgoing: REQ_SYS_ARCH_1

Description: The system implements a four-layer architecture for clear separation of concerns.

Architecture Layers:

┌─────────────────────────────────────────────────────────────┐
│                   User Application Layer                    │
│              (main.c - User customizable)                   │
└─────────────────────────────────────────────────────────────┘
                           ↕
┌─────────────────────────────────────────────────────────────┐
│              Example Component Library                      │
├───────────────┬──────────────┬──────────────┬───────────────┤
│ config_manager│  web_server  │ cert_handler │ netif_tunnel  │
│  - NVS mgmt   │  - HTTP API  │  - SSL certs │  - QEMU net   │
│  - Validation │  - WiFi mgr  │  - Auto-gen  │  - UART tun   │
│  - Runtime    │  - Captive   │  - Embedding │  - Bridge     │
└───────────────┴──────────────┴──────────────┴───────────────┘
                           ↕
┌─────────────────────────────────────────────────────────────┐
│          ESP-IDF Hardware Abstraction Layer                 │
│   NVS | HTTP | WiFi | GPIO | FreeRTOS | Netif | TCP/IP     │
└─────────────────────────────────────────────────────────────┘
                           ↕
┌─────────────────────────────────────────────────────────────┐
│            ESP32 Hardware / QEMU Emulator                   │
└─────────────────────────────────────────────────────────────┘

Layer Responsibilities:

  1. User Application Layer: Entry point (main.c), application-specific logic

  2. Component Library: Reusable example components (config, web, networking)

  3. ESP-IDF HAL: Framework-provided hardware abstraction

  4. Hardware: Physical ESP32 or QEMU emulation

Design Rationale: Layered architecture enables:

  • Independent testing of each layer

  • Component reuse across projects

  • Clear upgrade paths when ESP-IDF updates

  • Hardware/emulator abstraction

Component Design Specifications

Design Specification: Configuration Manager Component Design SPEC_ARCH_CONFIG_1
status: approved
tags: component, config
links outgoing: REQ_SYS_CFG_1

Description: Example component demonstrating NVS-based configuration patterns.

Purpose: Provide reference implementation for persistent configuration management.

Key Design Decisions:

  • NVS Storage: Uses ESP-IDF Non-Volatile Storage API

  • Runtime Cache: Configuration cached in RAM for fast access

  • Validation Framework: All parameters validated before persistence

  • Factory Reset: Recovery mechanism included

Location: main/components/config_manager/

API Pattern: Getter/setter functions with validation

See Also: JSON-Based Configuration Manager Design for detailed design

Design Specification: Web Server Component Design SPEC_ARCH_WEB_1
status: approved
tags: component, web, network
links outgoing: REQ_SYS_WEB_1

Description: Example HTTP server with WiFi management and captive portal.

Purpose: Provide reference implementation for web-based device configuration.

Key Design Decisions:

  • HTTP Server: ESP-IDF esp_http_server component

  • Static Files: Embedded in firmware using EMBED_FILES

  • Captive Portal: DNS server redirects all requests to device

  • WiFi Manager: Automatic AP/STA mode switching with NVS credentials

  • Fallback Logic: AP mode if STA connection fails

Location: main/components/web_server/

API Pattern: Initialization function, REST endpoints for configuration

Status: ✅ HTTP working, 🚧 HTTPS in progress

See Also: Web server requirements in Web Server Requirements

Design Specification: Certificate Handler Component Design SPEC_ARCH_CERT_1
status: draft
tags: component, security
links outgoing: REQ_SYS_WEB_1

Description: Automated SSL certificate management for HTTPS (work in progress).

Purpose: Enable HTTPS for web server without manual certificate management.

Key Design Decisions:

  • Build-Time Generation: Certificates generated during build if missing

  • Dual Tool Support: OpenSSL binary (preferred) or Python cryptography fallback

  • Firmware Embedding: Uses ESP-IDF EMBED_FILES feature

  • Long Validity: 25-year certificate lifetime for device lifecycle

Location: main/components/cert_handler/

Status: 🚧 Implementation in progress, HTTPS not working in QEMU yet

Known Limitation: HTTPS support in QEMU requires additional testing

Design Specification: Network Tunnel Component Design SPEC_ARCH_NETIF_1
status: approved
tags: component, qemu, network
links outgoing: REQ_SYS_SIM_1

Description: QEMU-specific network bridge enabling full TCP/IP stack in emulation.

Purpose: Enable hardware-free development with real network connectivity.

Key Design Decisions:

  • UART-Based Tunnel: Uses UART1 for frame transport

  • Ethernet Encapsulation: IP packets wrapped in Ethernet frames

  • Length-Prefix Protocol: 2-byte big-endian length header per frame

  • Python Bridge: Host-side TUN device management

  • Conditional Compilation: Only built for QEMU target

Architecture:

ESP32 lwIP Stack → UART1 → Python Bridge → Host TUN Device

Location: main/components/netif_uart_tunnel/

Performance: ~10 KB/s throughput (limited by 115200 baud UART)

See Also: QEMU Network Internals for implementation details

Data Flow Architecture

Design Specification: Component Communication Pattern SPEC_ARCH_COMM_1
status: approved
tags: dataflow, communication
links outgoing: REQ_SYS_ARCH_1

Description: Components communicate through well-defined APIs and FreeRTOS primitives.

Communication Patterns:

User Application
     ↕ (Function calls)
Component APIs
     ↕ (FreeRTOS primitives)
ESP-IDF HAL
     ↕ (Hardware registers)
Hardware

Synchronization Mechanisms:

  • Mutexes: Protect shared configuration state

  • Queues: Producer-consumer data flow between tasks

  • Event Groups: Task coordination and signaling

  • Semaphores: Resource counting and blocking

Design Principle: Components expose clean APIs; internal synchronization is hidden from users

Design Specification: Configuration Data Flow SPEC_ARCH_CONFIG_FLOW_1
status: approved
tags: dataflow, config
links outgoing: REQ_SYS_CFG_1

Description: Configuration flows through the system with caching and validation.

Flow Stages:

Boot:      NVS → config_load() → Runtime Cache → Application
Runtime:   Application → config_get() → Runtime Cache (fast)
Update:    Web UI → Validation → config_save() → NVS → Cache
Factory:   Factory Reset → Defaults → NVS → Cache

Performance Optimization: Runtime cache enables sub-microsecond config access

Data Integrity: All updates validated before NVS write

Design Specification: WiFi Manager Design Details SPEC_ARCH_WIFI_1
status: approved
tags: network, wifi
links outgoing: REQ_SYS_WEB_1

Description: WiFi management with automatic reconnection and AP fallback, including recovery strategy after network loss.

WiFi Operation Modes:

  1. Station (STA) Mode: Connect to existing WiFi network

  2. Access Point (AP) Mode: Create configuration network

  3. Fallback Logic: Auto-switch to AP if STA fails

Connection Flow:

Boot → Load NVS Credentials → STA Connection Attempt
                                     ↓ (success)
                                STA Connected
                                     ↓ (failure after timeout)
                                AP Mode + Captive Portal
                                (retries STA every 5 min)
                                     ↓ (5 min timeout reached)
                                    Reset & Boot

AP Mode Failsafe Recovery:

  • Purpose: Handle scenarios where network is unavailable after power loss

  • AP Entry: System enters AP mode with captive portal when STA connection fails

  • Retry Strategy: Attempts to reconnect to configured network every 5 minutes

  • Recovery Timeout: After 5 minutes in AP mode without successful STA connection, system performs reset

  • Rationale: Prevents indefinite AP mode if network hardware has failed or credentials are invalid; ensures system attempts network recovery periodically

Credential Management:

  • WiFi SSID/password stored in NVS

  • Factory reset clears credentials

  • Web interface provides credential update

Status: ✅ Complete with NVS integration

Design Specification: HTTP Server Architecture Details SPEC_ARCH_HTTP_1
status: approved
tags: network, http, web
links outgoing: REQ_SYS_WEB_1

Description: HTTP server provides web interface and REST API.

Server Features:

  • Static file serving from embedded filesystem

  • RESTful API endpoints for configuration

  • Captive portal detection and redirect

  • CORS headers for development

URL Structure:

/                   → index.html (main page)
/settings           → settings.html (configuration)
/wifi-setup         → wifi-setup.html (captive portal)
/api/config         → REST API (GET/POST)
/api/wifi           → WiFi management API

Status: ✅ HTTP working, 🚧 HTTPS in progress

QEMU Emulation Architecture

Design Specification: QEMU Hardware Abstraction SPEC_ARCH_QEMU_1
status: approved
tags: qemu, emulation
links outgoing: REQ_SYS_SIM_1

Description: Template supports QEMU emulation for hardware-free development.

Emulation Strategy:

  • Network Stack: Full TCP/IP via UART tunnel (not WiFi simulation)

  • Component Abstraction: Optional simulator implementations with identical APIs

  • Build System: CMake automatically selects hardware vs. simulator components

  • Clean Code: No #ifdef conditionals in application code

Network Architecture:

Browser (Host) → HTTP Proxy → TUN Bridge → QEMU UART1 → ESP32 lwIP

Components:

  1. QEMU Emulator: ESP32 hardware emulation

  2. Network Tunnel: netif_uart_tunnel_sim.c driver

  3. TUN Bridge: tools/serial_tun_bridge.py (Python)

  4. HTTP Proxy: tools/http_proxy.py for browser access

Benefits:

  • Fast iteration without hardware flashing

  • CI/CD automation without physical devices

  • GDB debugging with VS Code integration

  • Cross-platform development

Design Specification: QEMU Component Selection SPEC_ARCH_QEMU_BUILD_1
status: approved
tags: qemu, build
links outgoing: REQ_SYS_SIM_1

Description: Build system automatically selects appropriate component implementations.

Selection Mechanism:

# Component CMakeLists.txt pattern
if(CONFIG_TARGET_EMULATOR)
    set(COMPONENT_SRCS "component_sim.c")
else()
    set(COMPONENT_SRCS "component.c")
endif()

Configuration: idf.py menuconfig → “Build for QEMU emulator”

Design Benefits:

  • Same header files for both implementations

  • No code pollution with conditional compilation

  • Easy to add simulator support to any component

Threading Architecture

Design Specification: FreeRTOS Task Organization SPEC_ARCH_TASKS_1
status: approved
tags: threading, rtos
links outgoing: REQ_SYS_ARCH_1

Description: Application uses FreeRTOS tasks with priority-based scheduling.

Task Structure:

Core 0: Application Tasks (user-defined)
├── Main Task (Priority 1)
│   └── Initialization and coordination
└── User Tasks (Priority varies)
    └── Application-specific logic

Core 1: WiFi/Network Stack (ESP-IDF managed)
├── WiFi Management (Priority 2+)
├── TCP/IP Stack (lwIP)
└── HTTP Server

Design Guidelines:

  • Core 0 for application tasks

  • Core 1 reserved for WiFi/network (best performance)

  • Priority range: 0-25 (higher = more important)

  • Monitor stack with uxTaskGetStackHighWaterMark()

Design Specification: Memory Management Strategy SPEC_ARCH_MEMORY_1
status: approved
tags: memory, performance
links outgoing: REQ_SYS_HW_1

Description: Memory managed with FreeRTOS heap and ESP-IDF capabilities.

Allocation Strategy:

  • Static: Component structures at compile time (predictable)

  • Dynamic: Runtime allocations use heap_caps_malloc()

  • DMA Buffers: Use MALLOC_CAP_DMA capability

  • IRAM: Use IRAM_ATTR only for time-critical ISRs

Memory Configuration:

  • 4MB flash (CONFIG_ESPTOOLPY_FLASHSIZE_4MB)

  • ~41% free flash after base system

  • Monitor: esp_get_free_heap_size()

Design Principle: Prefer static allocation for predictable memory usage

Build System Integration

Design Specification: ESP-IDF CMake Integration SPEC_ARCH_BUILD_1
status: approved
tags: build, cmake
links outgoing: REQ_SYS_HW_1

Description: Project uses ESP-IDF CMake build system with component registration.

Build Structure:

# Top-level CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(esp32-template)

# Component CMakeLists.txt
idf_component_register(
    SRCS "component.c"
    INCLUDE_DIRS "."
    REQUIRES esp_http_server nvs_flash
)

Configuration Files:

  • sdkconfig: ESP-IDF configuration (flash, partition table)

  • CMakeLists.txt: Build definitions

  • main/Kconfig.projbuild: Custom menuconfig options

Design Specification: Flash Memory Configuration SPEC_ARCH_FLASH_1
status: approved
tags: flash, memory
links outgoing: REQ_SYS_HW_1

Description: Template configured for 4MB flash with optimized partitions.

Flash Layout:

  • Flash Size: 4MB (suitable for most ESP32 modules)

  • Partition Table: Single App Large (maximizes app space)

  • Free Space: ~41% available for growth

  • HTTPS Ready: Sufficient space for SSL certificates

Partition Layout:

Name        Type  Offset   Size
nvs         data  0x9000   24K   (config storage)
phy_init    data  0xf000   4K    (RF calibration)
factory     app   0x10000  ~3.8MB (firmware)

Verification: idf.py size shows memory usage

Development Workflow Design

Design Specification: GitHub Codespaces Integration SPEC_ARCH_CODESPACES_1
status: approved
tags: development, devcontainer
links outgoing: REQ_SYS_SIM_1

Description: Template optimized for zero-setup development in GitHub Codespaces.

Development Environment:

  • DevContainer: Ubuntu 24.04 with ESP-IDF v5.4.1 pre-installed

  • QEMU: Integrated emulator for hardware-free testing

  • VS Code: Pre-configured extensions (ESP-IDF, C/C++, Python)

  • Pre-commit Hooks: Quality gates for documentation

Workflow:

Fork Template → Open in Codespaces → Customize main.c →
Build → Test in QEMU → Flash to Hardware

Benefits: Consistent environment, no local setup, works in browser

Logging and Diagnostics

Design Specification: Logging and Diagnostics Strategy SPEC_ARCH_LOGGING_1
status: approved
tags: logging, diagnostics, debugging
links outgoing: REQ_SYS_REL_1

Description: Consistent logging strategy using ESP-IDF logging framework for diagnostics and debugging.

Log Levels:

  • ESP_LOGI: Normal operational events (initialization, state transitions)

  • ESP_LOGW: Recoverable issues (degraded mode, fallback actions)

  • ESP_LOGE: Error conditions requiring attention (failed operations)

  • ESP_LOGD: Debug information (disabled in production builds)

Logging Guidelines:

  • Component TAGs: Each file defines static const char* TAG with component name

  • Error Context: Always include esp_err_to_name() for ESP-IDF error codes

  • Initialization: Log start and completion of major initialization steps

  • State Changes: Log WiFi mode changes, connection events, system transitions

  • User Actions: Log web API requests and configuration changes

Build Configuration:

  • Production: INFO level (boot sequence, errors, warnings)

  • Development: DEBUG level (detailed operational data)

  • Configure via menuconfig: Component config → Log output → Default log verbosity

Performance Consideration:

Logging is synchronous and blocks the calling task. Avoid logging in time-critical paths (ISRs, high-frequency tasks).

Example Usage:

static const char* TAG = "wifi_manager";

ESP_LOGI(TAG, "Initializing WiFi manager");
esp_err_t ret = esp_wifi_init(&cfg);
if (ret != ESP_OK) {
    ESP_LOGE(TAG, "WiFi init failed: %s", esp_err_to_name(ret));
    return ret;
}

Error Recovery Strategy

Design Specification: Error Recovery and Reset Strategy SPEC_ARCH_ERROR_RECOVERY_1
status: approved
tags: error-handling, reliability, reset
links outgoing: REQ_SYS_REL_1

Description: Reset-first error recovery strategy for IoT device reliability.

Recovery Philosophy:

System uses reset as primary recovery mechanism for system-level failures, leveraging fast boot time (~3 seconds) and NVS persistence.

Error Classification:

  1. Protocol-Level Errors → Handle gracefully

    • TCP packet loss: Let lwIP retry

    • HTTP timeouts: Return error to client

    • Transient WiFi drops: Reconnection logic handles

    • Configuration validation failures: Reject and log

  2. System-Level Errors → Reset device

    • WiFi total failure after retries

    • NVS corruption detection

    • Critical component initialization failure

    • Unrecoverable state machine deadlock

Watchdog Protection:

  • Task watchdog enabled (CONFIG_ESP_TASK_WDT)

  • Prevents infinite loops and deadlocks

  • Automatic reset on watchdog timeout

Design Rationale:

  • ✅ Simpler code with fewer state machines

  • ✅ Fast boot time makes reset acceptable

  • ✅ NVS survives reset (configuration preserved)

  • ✅ Reduced attack surface (less recovery code = fewer bugs)

  • ✅ Deterministic recovery path

Trade-offs:

  • May lose transient runtime state (acceptable for stateless IoT device)

  • Debugging requires log analysis (logging captures failure context)

Performance Targets

Design Specification: System Performance Requirements SPEC_ARCH_PERF_1
status: approved
tags: performance, requirements
links outgoing: REQ_SYS_PERF_1

Description: Template targets reasonable performance for IoT applications.

Performance Targets:

  • Boot Time: < 3 seconds to WiFi connection

  • Web Response: < 500ms for configuration API calls

  • Memory Usage: < 100KB application heap usage

  • Task Latency: < 100ms for application tasks

Monitoring:

  • Use ESP_LOGI() for timing measurements

  • Monitor heap with esp_get_free_heap_size()

  • Check stack usage with uxTaskGetStackHighWaterMark()

  • Profile with ESP-IDF performance tools

Traceability

All traceability is automatically generated by Sphinx-Needs based on the :links: attributes in each specification.

ID

Title

Status

Tags

API_COMP_CERT_HANDLER

Certificate Handler

implemented

API_COMP_CONFIG_MANAGER

Config Manager

implemented

API_COMP_NETIF_TUNNEL

Network Tunnel

implemented

API_FUNC_CERT_HANDLER_GET_CA_CERT

cert_handler_get_ca_cert

implemented

API_FUNC_CERT_HANDLER_GET_INFO

cert_handler_get_info

implemented

API_FUNC_CERT_HANDLER_GET_SERVER_CERT

cert_handler_get_server_cert

implemented

API_FUNC_CERT_HANDLER_GET_SERVER_KEY

cert_handler_get_server_key

implemented

API_FUNC_CERT_HANDLER_INIT

cert_handler_init

implemented

API_FUNC_CONFIG_COMMIT

config_commit

implemented

API_FUNC_CONFIG_FACTORY_RESET

config_factory_reset

implemented

API_FUNC_CONFIG_GET_ALL_AS_JSON

config_get_all_as_json

implemented

API_FUNC_CONFIG_GET_BOOL

config_get_bool

implemented

API_FUNC_CONFIG_GET_INT16

config_get_int16

implemented

API_FUNC_CONFIG_GET_INT32

config_get_int32

implemented

API_FUNC_CONFIG_GET_SCHEMA_JSON

config_get_schema_json

implemented

API_FUNC_CONFIG_GET_STRING

config_get_string

implemented

API_FUNC_CONFIG_INIT

config_init

implemented

API_FUNC_CONFIG_SET_ALL_FROM_JSON

config_set_all_from_json

implemented

API_FUNC_CONFIG_SET_BOOL

config_set_bool

implemented

API_FUNC_CONFIG_SET_BOOL_NO_COMMIT

config_set_bool_no_commit

implemented

API_FUNC_CONFIG_SET_INT16

config_set_int16

implemented

API_FUNC_CONFIG_SET_INT16_NO_COMMIT

config_set_int16_no_commit

implemented

API_FUNC_CONFIG_SET_INT32

config_set_int32

implemented

API_FUNC_CONFIG_SET_STRING

config_set_string

implemented

API_FUNC_CONFIG_SET_STRING_NO_COMMIT

config_set_string_no_commit

implemented

API_FUNC_CONFIG_WRITE_FACTORY_DEFAULTS

config_write_factory_defaults

implemented

API_FUNC_NETIF_TUNNEL_DEINIT

netif_uart_tunnel_deinit

implemented

API_FUNC_NETIF_TUNNEL_GET_HANDLE

netif_uart_tunnel_get_handle

implemented

API_FUNC_NETIF_TUNNEL_INIT

netif_uart_tunnel_init

implemented

API_STRUCT_NETIF_TUNNEL_CONFIG

netif_uart_tunnel_config_t

implemented

REQ_CFG_JSON_1

JSON Schema as Configuration Source of Truth

draft

config; schema; architecture

REQ_CFG_JSON_10

Web Interface Integration Support

approved

config; integration

REQ_CFG_JSON_11

NVS Error Graceful Handling

draft

config; error-handling; reliability

REQ_CFG_JSON_12

Configuration Initialization on Boot

draft

config; boot

REQ_CFG_JSON_13

Simple Process to Add Configuration Fields

draft

config; extensibility; developer-experience

REQ_CFG_JSON_14

Type Safety via Optional Static Validation

draft

config; validation; developer-experience

REQ_CFG_JSON_15

Configuration Schema Versioning and Migration

open

config; versioning; migration; future

REQ_CFG_JSON_2

Parameter Grouping for UI Organization

draft

config; ui; schema

REQ_CFG_JSON_3

Parameter Type System

draft

config; types

REQ_CFG_JSON_4

Build-Time Factory Defaults Generation

draft

config; build; code-generation

REQ_CFG_JSON_5

No Runtime JSON Parsing in C Code

draft

config; performance; memory

REQ_CFG_JSON_6

Key-Based NVS Storage

draft

config; storage; nvs

REQ_CFG_JSON_7

Type-Safe Configuration API

draft

config; api; type-safety

REQ_CFG_JSON_8

Persistent Configuration Storage

draft

config; storage; nvs

REQ_CFG_JSON_9

Factory Reset Capability

draft

config; reset

REQ_NETIF_TUNNEL_1

QEMU UART Network Bridge

approved

emulation; network; qemu; uart

REQ_NETIF_TUNNEL_2

Packet Encapsulation

approved

emulation; protocol

REQ_NETIF_TUNNEL_3

Host-Side Bridge Script

approved

emulation; tooling; host

REQ_NETIF_TUNNEL_4

DHCP Client Support

approved

emulation; network; dhcp

REQ_NETIF_TUNNEL_5

Conditional Compilation

approved

emulation; build

REQ_NETIF_TUNNEL_DOC_1

Emulation Setup Documentation

approved

emulation; documentation

REQ_NETIF_TUNNEL_NF_1

Tunnel Throughput

approved

emulation; performance

REQ_NETIF_TUNNEL_NF_2

Packet Loss Handling

approved

emulation; reliability

REQ_SYS_ARCH_1

Component-based Architecture

approved

architecture; modularity

REQ_SYS_CFG_1

Non-volatile Configuration Storage

approved

storage; nvs; configuration

REQ_SYS_HW_1

ESP32 Hardware Platform

approved

hardware; platform

REQ_SYS_NET_1

WiFi Connectivity

approved

network; wifi

REQ_SYS_PERF_1

Memory Management

approved

performance; memory

REQ_SYS_REL_1

Error Handling and Recovery

approved

reliability; error-handling

REQ_SYS_SEC_1

HTTPS Support

open

security; https; future

REQ_SYS_SIM_1

Emulator Support

approved

emulator; qemu; testing

REQ_SYS_SIM_2

Emulator Network Connectivity

approved

emulator; qemu; network; development

REQ_SYS_TIME_1

System Time and NTP Support

open

time; ntp; future

REQ_SYS_WEB_1

Web-based Configuration

approved

web; configuration

REQ_WEB_1

Real-time Status Display

approved

web; ui; monitoring

REQ_WEB_2

Configuration Interface

approved

web; ui; configuration

REQ_WEB_3

WiFi Setup Interface

approved

web; wifi; network

REQ_WEB_4

Web Interface Navigation

approved

web; ui; navigation

REQ_WEB_5

HTTP Server Concurrency

approved

web; performance

REQ_WEB_CONF_1

Configuration REST API

approved

web; api; config

REQ_WEB_NF_1

Web UI Responsiveness

approved

web; performance; ux

REQ_WEB_NF_2

Mobile-First Design

approved

web; ui; mobile

REQ_WEB_SCHEMA_1

Schema-Driven Configuration Form

approved

web; ui; config

SPEC_ARCH_BUILD_1

ESP-IDF CMake Integration

approved

build; cmake

SPEC_ARCH_CERT_1

Certificate Handler Component Design

draft

component; security

SPEC_ARCH_CODESPACES_1

GitHub Codespaces Integration

approved

development; devcontainer

SPEC_ARCH_COMM_1

Component Communication Pattern

approved

dataflow; communication

SPEC_ARCH_CONFIG_1

Configuration Manager Component Design

approved

component; config

SPEC_ARCH_CONFIG_FLOW_1

Configuration Data Flow

approved

dataflow; config

SPEC_ARCH_ERROR_RECOVERY_1

Error Recovery and Reset Strategy

approved

error-handling; reliability; reset

SPEC_ARCH_FLASH_1

Flash Memory Configuration

approved

flash; memory

SPEC_ARCH_HTTP_1

HTTP Server Architecture Details

approved

network; http; web

SPEC_ARCH_LAYERS_1

ESP32 Template Layered Architecture

approved

architecture; layering

SPEC_ARCH_LOGGING_1

Logging and Diagnostics Strategy

approved

logging; diagnostics; debugging

SPEC_ARCH_MEMORY_1

Memory Management Strategy

approved

memory; performance

SPEC_ARCH_NETIF_1

Network Tunnel Component Design

approved

component; qemu; network

SPEC_ARCH_PERF_1

System Performance Requirements

approved

performance; requirements

SPEC_ARCH_QEMU_1

QEMU Hardware Abstraction

approved

qemu; emulation

SPEC_ARCH_QEMU_BUILD_1

QEMU Component Selection

approved

qemu; build

SPEC_ARCH_TASKS_1

FreeRTOS Task Organization

approved

threading; rtos

SPEC_ARCH_WEB_1

Web Server Component Design

approved

component; web; network

SPEC_ARCH_WIFI_1

WiFi Manager Design Details

approved

network; wifi

SPEC_CFG_JSON_API_1

Type-Safe Configuration API

approved

api; interface; c-api

SPEC_CFG_JSON_ARCH_1

JSON Schema-Driven Architecture

draft

architecture; config; json-schema

SPEC_CFG_JSON_BULK_1

Bulk JSON Configuration API

approved

api; json; bulk-operations

SPEC_CFG_JSON_CODEGEN_1

Factory Reset via Bulk JSON Update

approved

build-process; code-generation; factory-reset

SPEC_CFG_JSON_EXTEND_1

Adding New Configuration Fields

approved

development; guide; extensibility

SPEC_CFG_JSON_SCHEMA_1

Configuration Schema Structure

approved

data-structure; schema

SPEC_CFG_JSON_SOURCE_1

JSON Schema as Single Source of Truth

approved

architecture; schema; design-pattern

SPEC_CFG_JSON_STORAGE_1

NVS Storage Format

approved

storage; nvs

SPEC_CFG_JSON_TYPESAFETY_1

Type Safety Without Code Generation

approved

type-safety; best-practices

SPEC_CFG_JSON_UI_1

JSON Schema for UI Generation

approved

web; ui; javascript

SPEC_CFG_WEB_ARCH_1

Configuration Webpage Architecture

open

frontend; javascript; ui

SPEC_CFG_WEB_COUNTDOWN_1

Device Reset Countdown Interface

open

ui; countdown; reset

SPEC_CFG_WEB_ERROR_1

Error Handling and User Feedback

open

error-handling; feedback

SPEC_CFG_WEB_FLOW_1

Configuration Data Flow

open

data-flow; json; api

SPEC_CFG_WEB_FORM_1

Dynamic Form Generation from Schema

open

form-generation; schema; javascript

SPEC_CFG_WEB_INIT_1

Complete Page Initialization Flow

open

initialization; lifecycle

SPEC_CFG_WEB_MAPPING_1

JSON Array to Form Field Mapping

open

data-mapping; json; form

SPEC_CFG_WEB_STATE_1

UI State Management

open

ui-state; javascript

SPEC_WEB_ARCH_1

Web Server Architecture

approved

web; architecture

SPEC_WEB_CAPTIVE_1

Captive Portal Design

approved

web; captive-portal; wifi

SPEC_WEB_CONFIG_1

HTTP Server Configuration

approved

web; config; performance

SPEC_WEB_EXTEND_1

Extension Guide for Web Pages

approved

web; extensibility; guide

SPEC_WEB_INTEGRATION_CFG_1

Config Manager Integration Pattern

approved

web; integration; config

SPEC_WEB_INTEGRATION_WIFI_1

WiFi Manager Integration Pattern

approved

web; integration; wifi

SPEC_WEB_REST_CFG_1

Configuration API Endpoints

approved

web; api; config; schema

SPEC_WEB_REST_HEALTH_1

System Health API Endpoint

approved

web; api; diagnostics

SPEC_WEB_REST_WIFI_1

WiFi Management REST API Endpoints

approved

web; api; wifi

SPEC_WEB_ROUTES_1

URI Routing Table

approved

web; routing

SPEC_WEB_SECURITY_1

CORS Configuration

approved

web; security; cors

SPEC_WEB_STATIC_1

Static File Embedding Strategy

approved

web; build; embedding

SPEC_WEB_TEST_1

Web Server Testing Strategy

approved

web; testing

SPEC_ARCH_LAYERS_1