Backend layer
Shield
Shield is the Node-first server/resource runtime. It renders pages, handles HTTP, and keeps backend concerns explicit.
Resources
A Resource is the HTTP boundary. It can read ctx, params, query and input, then return page/json/text/html/redirect results.
export const projectsResource = resource({ name: 'projects', path: '/projects', kind: 'page', service: projectService, index: async ({ service }) => { return page({ view: Projects, props: { projects: await service.list() }, head: { title: 'Projects' } }) }})Services
A Service is business logic. It can inherit from a primary model, override behavior and extend methods. Services do not receive HTTP ctx automatically.
Models
A Model is source-backed and schema-aware. It composes persistence-facing methods and validates store/update/replace input through schema parsers.
Features
A Feature is a domain bundle: schemas, models, services, resources and scoped middleware for one product area.
Plugins
A Plugin is cross-cutting infrastructure: locale, database, auth, CSRF, flash, mail, events or shared context. It is object syntax, not app.use().
App start
Shield apps expose app.fetch(request) for tests and adapters, and app.start() for normal Node startup. There is no app.get(), app.post() or app.use().