PSR-based runtime
HTTP messages, middleware, factories, logging, HTTP client integration and the DI container follow PSR contracts where it makes sense.
A modular PHP 8.1+ foundation with PSR HTTP, PSR logging, a PSR-11 compatible container, routing, views, database layer, sessions, validation, uploads and CLI commands.
$router->getNamed('home.index', '/', HomeController::class . '@index');HTTP messages, middleware, factories, logging, HTTP client integration and the DI container follow PSR contracts where it makes sense.
Web requests and CLI commands share the same configuration, provider model and container, with separate Kernel and CliKernel entrypoints.
Routing, views, database layer, sessions, validation, uploads, security, events, queues and documentation are organized as explicit framework components.
Choose the area you are working on and jump straight to the relevant guide or technical reference.
From configuration and the first route to a working page.
DocumentationWhat `AbstractController` provides and when a shared application layer is useful.
DocumentationNamed routes, parameters, and localization only where the URL strategy actually needs them.
DocumentationUse middleware for shared HTTP concerns, attach it to routes or groups, and keep business logic out of it.
DocumentationHow layouts, page views, shared data, and partials fit together.
DocumentationService registration, interface bindings, and explicit application composition.
DocumentationThe YAML manifest, typed configuration definitions, environment values, and the production config cache.
DocumentationPrepare environment values, let Lemonade use its production config cache, and deploy only the artifacts the runtime actually needs.
DocumentationThe common flow from a GET form through POST, CSRF, and validation to a redirect and follow-up GET.
DocumentationValidation schemas, one-time input validation, and reusable logic in a dedicated service.
DocumentationUsing `Database`, QueryBuilder, and transactions.
DocumentationKeep database schema changes clear, ordered, and recorded with the built-in migration system.
DocumentationEndpoints through API providers, a clear JSON contract, and access rules in `Api.yaml`.
DocumentationCommands, YAML registration, and handing longer work off to the queue.
DocumentationCache, sessions, uploads, filesystem, and HTTP clients without coupling the application to framework internals.
DocumentationError pages, kernel tests, and diagnostics through logs and QA commands.
DocumentationIn-process events, queued messages, and CLI workers.
DocumentationEnable `robots.txt` and `sitemap.xml` only when the application actually needs them.
DocumentationA component registry for metadata, breadcrumbs, pagination, and custom components.
DocumentationLower-level notes on the application lifecycle and container.
Documentation