{
  "repo_notes": [
    {
      "content": ""
    }
  ],
  "pages": [
    {
      "title": "Overview",
      "purpose": "Introduce ThingsGateway, explaining what it is, its core purpose as an industrial IoT gateway, and the high-level architecture",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Key Features",
      "purpose": "List and describe the main features including multi-protocol support, plugin architecture, data persistence options, and deployment models",
      "parent": "Overview",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "System Requirements and Dependencies",
      "purpose": "Document the .NET versions, target frameworks, required NuGet packages, and system requirements",
      "parent": "Overview",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Getting Started",
      "purpose": "Provide quick-start guide for installing and running ThingsGateway",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Installation and Deployment",
      "purpose": "Explain deployment options including Docker (x64/ARM64), web server, desktop application, and configuration basics",
      "parent": "Getting Started",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Initial Configuration",
      "purpose": "Guide users through initial setup including appsettings.json, environment variables, logging configuration, and first channel/device setup",
      "parent": "Getting Started",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Architecture Overview",
      "purpose": "Explain the overall system architecture including layered design, separation of concerns, and component relationships",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Layered Architecture",
      "purpose": "Describe the Foundation, Gateway Application, and UI/Admin layers and their responsibilities",
      "parent": "Architecture Overview",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Plugin System Architecture",
      "purpose": "Explain the plugin architecture including Foundation vs Plugin layer separation, dynamic loading with AssemblyLoadContext, and plugin types",
      "parent": "Architecture Overview",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Build System and Conditional Compilation",
      "purpose": "Document the MSBuild-based build system including Directory.Build.props, conditional plugin loading, multi-targeting, and NuGet package generation",
      "parent": "Architecture Overview",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Foundation Layer",
      "purpose": "Document the core foundation libraries that provide protocol implementations and communication primitives",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Device Communication",
      "purpose": "Explain DeviceBase abstraction, IDevice interface, protocol implementations, read/write operations, and data parsing",
      "parent": "Foundation Layer",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Channel Architecture",
      "purpose": "Document IChannel interface, channel implementations (TCP/UDP/Serial), channel options, and connection lifecycle",
      "parent": "Foundation Layer",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Data Handling and Transformation",
      "purpose": "Describe DataHandlingAdapter, message parsing, ThingsGatewayBitConverter for endianness/format conversion, and WaitHandlePool for request-response correlation",
      "parent": "Foundation Layer",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Core Utilities",
      "purpose": "Document TimerX scheduling, ExpiringDictionary caching, WaitLock concurrency primitives, and Reflect utilities",
      "parent": "Foundation Layer",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Gateway Application",
      "purpose": "Explain the main gateway application layer that orchestrates device communication and data flow",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Runtime Management System",
      "purpose": "Document the entity-to-runtime conversion, GlobalData static registry, RuntimeServiceHelper, and runtime synchronization",
      "parent": "Gateway Application",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Device Lifecycle Management",
      "purpose": "Explain DeviceThreadManage, driver initialization, StartAsync/StopAsync lifecycle, TaskSchedulerLoop, and thread management",
      "parent": "Gateway Application",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Variable Management",
      "purpose": "Document VariableRuntime, VariableSourceRead, variable packing optimization, and data collection workflow",
      "parent": "Gateway Application",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Concurrency and Read/Write Coordination",
      "purpose": "Explain AsyncReadWriteLock, reader/writer priority, duty cycle control, and concurrent operation management",
      "parent": "Gateway Application",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Event System",
      "purpose": "Document GlobalData event dispatchers, VariableValueChangeEvent, DeviceStatusChangeEvent, AlarmChangedEvent, and event flow",
      "parent": "Gateway Application",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Redundancy and Failover",
      "purpose": "Explain device redundancy system, master/slave configuration, failover triggers, and variable state transfer",
      "parent": "Gateway Application",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Plugin Development",
      "purpose": "Guide for developing custom plugins for data collection and business logic integration",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Collection Plugins (CollectBase)",
      "purpose": "Document how to create data collection plugins including protocol implementation, variable loading, and scheduled tasks",
      "parent": "Plugin Development",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Business Plugins (BusinessBase)",
      "purpose": "Explain business plugin development for data persistence, distribution, and serving protocols",
      "parent": "Plugin Development",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Plugin Service and Dynamic Loading",
      "purpose": "Document PluginService, AssemblyLoadContext usage, plugin discovery, driver instantiation, and property configuration",
      "parent": "Plugin Development",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Plugin Packaging and Distribution",
      "purpose": "Explain how to package plugins as NuGet packages, versioning, and deployment via Directory.build.targets",
      "parent": "Plugin Development",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Built-in Protocols",
      "purpose": "Document the built-in protocol implementations including Modbus, Siemens S7, OPC UA, OPC DA, and Dlt645",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Modbus Protocol",
      "purpose": "Document Modbus Master/Slave implementations, RTU/TCP/UDP support, function codes, and address parsing",
      "parent": "Built-in Protocols",
      "page_notes": [
        {
          "content": ""
        }
      ]
    },
    {
      "title": "Siemens S7 Protocol",
      "purpose": "Explain S7 Master implementation, PLC types, area addressing, and data block access",
      "parent": "Built-in Protocols",
      "page_notes": [
        {
          "content": ""
        }
      ]
    }
  ]
}
