Skip to content

Project layout

PathPurpose
core/Laravel modular monolith and Filament panels
core/app/Http/ControllersAccount, domain, administrator, edge, health, metrics APIs
core/app/FilamentAdministrator and domain-user pages/resources
core/app/JobsBounded asynchronous side effects and global reconciliation
core/app/ModelsDesired and operational Eloquent state
core/app/SupportExternal boundaries and reusable typed policy
core/database/migrationsControl PostgreSQL schema
core/routesAPI, web/edge, and scheduler definitions
edge-agent/Go enrollment, sync, activation, heartbeat, and task agent
docker/openresty/Data-driven request/runtime Lua
docker/nginx/Web, edge-control, OpenResty, proxy, cache, and fixtures
docker/pdns, docker/dnsdistAuthoritative DNS runtime
docker/postgresPowerDNS base schema and separate runtime migrations
docker/vector, docker/clickhouseTelemetry pipeline and schema
docker/prometheus, docker/alertmanagerMetrics and alerts
compose.dev.ymlPersistent full development topology
compose.prod.ymlRole-based production service definitions
deploy/production/Public/split-host/IPv6/external-data overlays
scripts/PKI, environment, and Compose validation helpers
tests/e2e/Agent-owned non-UI real-runtime qualification
tests/docs/Documentation validation
.github/Issue forms and CI/publish workflow
.agents/skills/Repository execution guides governed by AGENTS.md
docs/VitePress Markdown source and machine-generated API artifact
docs/legacy/Verbatim archived documentation, excluded from the site

Module rule

The control plane remains one Laravel application. Normal CRUD uses controllers, form requests, policies, Eloquent models, resources, and Filament resources. Jobs own asynchronous effects. Support classes exist for true external boundaries or typed reusable policy, not as repository/manager wrappers around ordinary CRUD.

Production names describe behaviour and must not include roadmap phase numbers, V2, New, or Final.

CDNFoundry documentation