Five Patterns in QQQ 4.0
Understand metadata, backend interfaces, typed actions, extension points, and explicit deployment.

Updated for the QQQ 4.0 release review on September 10, 2026.
Metadata describes the application
QInstance assembles tables, fields, processes, backends, and navigation. The same metadata informs data actions and the admin UI. Keep schema mapping, permissions, and lifecycle settings explicit; metadata alone is not a complete production application.
Backends implement operations
The framework dispatches operations through backend interfaces. RDBMS, files, documents, and APIs have different capabilities. Shared inputs make application code more consistent, but do not make joins or transaction semantics identical across storage systems.
Actions use typed inputs and outputs
Query, insert, update, and process actions accept operation-specific inputs and return outputs containing results and errors. QContext carries the current instance and session. Custom code should preserve that context, permission checks, and error handling.
Extension points remain Java
Use BackendStep for process logic, table customizers for CRUD behavior, and the backend SPI for storage integrations. Read the actual 4.0 interfaces before overriding them. The migration guide lists the changed packages and signatures.
Deployment belongs to the application
Package a Java artifact, configure authentication and storage, and test the running system. The sample demonstrates the framework; backups, scaling, service objectives, and component licenses remain explicit choices.