Doover platform development reference. Use when assisting with development of Doover applications — provides correct import paths, class structures, API patterns, and code examples for the pydoover SDK across all app types (Docker, Processor, Integration, Widget).
Development reference for building applications on the Doover IoT platform using the pydoover SDK and the widget JavaScript framework (React + Module Federation).
You are assisting a developer who is building or maintaining a Doover application. The reference docs in this skill contain the correct patterns, class structures, import paths, and code examples for the pydoover SDK and the widget JS framework. Use them to give accurate, idiomatic answers — don't guess at APIs or invent patterns.
Load relevant reference chunks when the developer is:
config-schema.md for the pydoover.config schema API (types, defaults, constraints, nested objects)docker-ui.md for the pydoover.ui component API (variables, parameters, actions, submodules, range coloring)widget-architecture.md for the 3-layer component pattern, Module Federation config, and styling conventions; load widget-hooks.md for platform hooks and data accesstags-channels.md for get_tag, set_tag, channel publishing, and inter-agent communicationreferences/index.md — this contains a keyword registry mapping topics to specific chunksAll chunks live in references/ relative to this skill.
| Chunk | File | Covers |
|---|---|---|
| Configuration Schema | config-schema.md | pydoover.config — Boolean, String, Integer, Number, Array, Object, Enum types, defaults, constraints, nested schemas, export |
| Tags & Channels | tags-channels.md | get_tag, set_tag, channel publishing, inter-agent messaging, throttling, state persistence |
| doover_config.json | doover-config.md | App metadata, schema references, platform interfaces, dependency declarations |
| Chunk | File | Covers |
|---|---|---|
| Application Class | docker-application.md | pydoover.docker.Application — setup, main_loop, callbacks, lifecycle |
| UI Components | docker-ui.md | pydoover.ui — Variable, Parameter, Action, Submodule, range coloring, alerts, deduplication |
| Advanced Patterns | docker-advanced.md | State machines, async workers, hardware I/O (GPIO, Modbus), data aggregation |
| Project Setup | docker-project.md | Entry point (run_app), Dockerfile, docker-compose, simulators, environment variables |
| Chunk | File | Covers |
|---|---|---|
| Handler & Events | cloud-handler.md | pydoover.cloud.processor.Application — handler entry point, event methods (on_message_create, on_schedule, on_ingestion, on_deployment) |
| Project Setup | cloud-project.md | build.sh, Lambda packaging, cold start considerations, idempotency |
| Processor Features | processor-features.md | ManySubscriptionConfig, ScheduleConfig, ui_manager.push_async, connection status, processor-specific patterns |
| Integration Features | integration-features.md | IngestionEndpointConfig, ExtendedPermissionsConfig, payload parsing, device routing, HMAC/CIDR validation |
| Chunk | File | Covers |
|---|---|---|
| Widget Architecture | widget-architecture.md | 3-layer component pattern, Module Federation config (rsbuild), shared modules from customer_site, ConcatenatePlugin, Tailwind CSS styling, processor-side RemoteComponent setup, name conventions |
| Widget Hooks & Data | widget-hooks.md | Platform hooks (useAgent, useAgentChannel, useChannelUpdateAggregate, useChannelSendMessage), dataProvider methods, useParams/useRemoteParams, permissions, WebSocket behavior, common read/write patterns |
pydoover SDK has specific import paths (e.g., from pydoover.docker import Application vs from pydoover.cloud.processor import Application). Don't guess — check the relevant chunk.main_loop); Cloud apps respond to events (on_message_create, on_schedule, etc.). Don't mix patterns.pydoover.ui. Integration apps never have UI.RemoteComponent + on_aggregate_update) registers the widget with the platform. Both chunks should be loaded together.useParams() from react-router for agentId. Check widget-architecture.md for the exact structure.customer_site/hooks. Don't invent hook signatures — check widget-hooks.md for the correct names, parameters, and return values.pydoover.config API is identical regardless of app type.