This repository is the engineering documentation entrypoint for Enfyra contributors.
It is not product documentation, end-user documentation, or API marketing material. Its purpose is to help contributors understand how the Enfyra codebases are structured, which subsystems own which behaviors, where runtime data flows, and where to start debugging or implementing changes.
These docs cover two codebases:
serverEnfyra's programmable backend platform with metadata-driven REST/GraphQL, sandboxed execution, flow automation, websocket runtime, file/storage subsystems, and multi-database support.appEnfyra's Nuxt admin application, including schema-driven CRUD UI, Nitro bridge, OAuth/auth flows, realtime bridge, shared state, and contributor-facing feature maps.
The current documentation set is:
vi/Vietnamese contributor documentation
The Vietnamese set is currently the primary and most complete version.
Start from the language root, then follow the learning path in that language's README.
For the current Vietnamese set:
- Open
vi/README.md. - Follow the guided reading order for
serverorapp. - Use the subsystem guides for architecture and contracts.
- Use the feature maps and debug playbooks once you already know the relevant layer.
The documentation is organized into a few recurring types:
- Overview Entry points that explain the learning order and subsystem boundaries.
- Architecture Boot order, request lifecycle, layout/routing, and runtime layering.
- Contracts Runtime object shapes, context contracts, state carriers, and integration boundaries.
- Maps Metadata maps, feature maps, and file-entry maps.
- Playbooks Symptom-based debugging guides.
Read from entrypoint to subsystem.
Do not start by searching the codebase blindly unless you already know the subsystem boundary. Enfyra is intentionally layered, so fast progress depends on identifying the correct runtime layer first.
When the code changes in a way that affects architecture, ownership boundaries, runtime contracts, file entrypoints, debug paths, or subsystem maps, the matching docs should be updated in the same change.