PSR-based runtime
HTTP messages, middleware, factories, logging, HTTP client integration and the DI container follow PSR contracts where it makes sense.
Explicit architecture for websites, administration systems, CMS projects and integration applications. Lemonade is built on a PSR runtime, DI container, providers, routing and CLI. It adds infrastructure for databases, migrations, cache, localization, validation, queues, APIs and security.
$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.
Databases and migrations, cache, localization, validation, queues, APIs, middleware, security, uploads, events and support utilities are organized as explicit framework modules.
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