Skip to content
Concept

Nexia System Overview

Follow an App request through the Shell, SDK, and Core, and see which code you own.

Nexia System Overview

Your App in one flow

An App is an independently versioned Composer package running inside Nexia's Laravel host. You write its business behavior and React screens. You use the SDK for host services; Core supplies their implementations.

User opens an App → Shell loads its screen → screen calls its API → Core establishes tenant and actor → App authorizes and performs the operation → response updates the screen.

LayerYou use it forYou change
AppModels, business rules, policies, API handlers, screens, translationsYour App repository
App SDKPublic services, components, types, and contribution interfacesApp imports and declarations; normally no SDK source change
CoreTenant isolation, identity, authorization machinery, host runtimes, UI compositionNothing for a normal App feature

Start with Create an App Package, then Create a Resource. To add an existing platform capability, find it in App SDK.

What happens to a Note

The tutorial generator creates a Note model, Policy, controller, Resource Module, routes, and frontend files in the Workshop App. These files have separate responsibilities even though they describe one Resource.

StepOwnerResult
Open the Notes routeShell plus App SurfaceThe registered React screen loads
Request the listApp Surface and controllerList parameters reach the backend
Establish the callerCore HTTP middlewareTenant, actor, and relevant request context are available
Select visible NotesApp query using SDK authorizationOnly permitted rows are returned
Save a NoteApp validation, Policy, and modelBusiness rules and persistence run in the tenant
Refresh the viewApp query and screenThe user sees authoritative saved data

A Resource descriptor publishes metadata about this capability. It does not create your business rules, choose the App overview, or replace server-side validation. See Extension Model for discovery and Build an App screen for the UI.

Central and tenant execution

ContextResponsibility
CentralPublic sites, developer documentation, tenant provisioning, platform administration
TenantA customer's Shell, App APIs, business data, and permissions

Open App routes on a tenant domain. Central pages do not supply tenant business context. In the current runtime, tenant business data lives in tenant databases; organizational selection stays inside that tenant. See Tenant and context.

Core, Shell, SDK, Apps, and supporting runtime services.

Apps share the Laravel runtime; installing a new App does not create a separate service. The optional Agent Gateway has a separate runtime and invokes protected tenant APIs with delegated authority. PostgreSQL holds durable business data; Redis, search indexes, and browser state serve narrower operational purposes.

Keep the package boundary

Use Nexia\* for PHP host contracts. Use @nexia/sdk for frontend types and pure utilities, and /host for bound components, hooks, and services. App code never imports Core App\*, Core frontend aliases, or another App.

When another App owns the data you need, choose a supported reference or event flow in Choose a cross-App integration. A host service contract must remain meaningful without any particular App.

The generator creates the standard wiring; your App still owns every business rule. Authentication, installation, and visible navigation are not grants. Permissions and roles explains that decision.

Go deeper when needed

Source of truth: docs/developers/content/en/architecture/system-overview.md