Begin with a working application
Complete Your First App and keep its known-good artifact. Choose one business workflow, such as an order moving from draft to approved. Write down its required fields, allowed transitions, permission rules, and side effects before adding code.
Add the data model
Create explicit schema migrations for order and order-line tables. Define matching QTableMetaData and QFieldMetaData, including backend column names, primary keys, required fields, and possible-value sources. Use joins and associations for the order-to-lines relationship. Register all names in the same QInstance and validate it.
The table guide provides the real 4.0 builder API. For a larger example, inspect the application template entities and producers rather than copying nonexistent @QTableMetaData annotations.
Implement a process
Create a BackendStep that reads the selected records, validates that the current user may approve them, checks the allowed starting status, and performs the update through the action pipeline. Register its QCodeReference in QProcessMetaData.withStepList. Add frontend steps only when the user must supply or confirm input.
See the complete process example. Design concurrent update and retry behavior explicitly. Updating a status field does not automatically send notifications, reserve inventory, or establish durable approval history.
Add navigation and verification
Group the tables and process in QAppMetaData and verify them in Material Dashboard 0.41.0. Test successful approval, denied permission, invalid status, missing records, duplicate submission, and backend failure. Read persisted values back and inspect the process result.
Prepare deployment
Configure real authentication, secrets, logging, database recovery, health probes, and scheduler lifecycle. Run the deployment checklist. This tutorial is a development path, not a claim that a production OMS or all enterprise requirements are complete within a weekend.