Layering and Precedence¶
Lilya composes behavior across nested layers. Most configuration follows predictable precedence rules.
Layer model¶
Typical chain for middleware, permissions, dependencies, and handlers:
- Application layer
- Include or Host layer
- Route layer
- Handler-level declarations (when supported)
Settings precedence¶
- Explicit parameters passed to
Lilya(...) settings_moduleon app instanceLILYA_SETTINGS_MODULE- Lilya defaults
Data flow¶
flowchart LR
In[Inbound HTTP body] --> Req[Request object]
Req --> Parse[Header/query/body parsing]
Parse --> Inject[Path params and dependencies]
Inject --> Domain[Handler business logic]
Domain --> Serialize[Encoder/serializer]
Serialize --> Resp[Response object]
Resp --> Out[ASGI outbound messages]
Design implications¶
- Put cross-cutting concerns at app/include level
- Keep route-level declarations focused on local policy
- Use handler-level dependency declarations for explicit contracts