qStudio Deep Dive: AI-Powered Development
Explore qStudio, our AI-powered development environment that helps you design tables, generate reports, and build dashboards through natural language.

Building enterprise applications typically requires translating business requirements into technical specifications, then into code. qStudio collapses these steps by letting you describe what you want and generating the metadata directly.
qStudio represents the next evolution of low-code development. Instead of dragging and dropping components, you describe what you want in plain English and the AI generates the metadata.
How qStudio Works
qStudio connects to your qqq application and provides an AI-assisted interface for building and modifying metadata. You describe what you need, and qStudio generates the appropriate table definitions, processes, widgets, and reports.
You: "I need to track customer orders with line items,
shipping addresses, and order status"
qStudio generates:
- Order table with status workflow
- LineItem table with product references
- ShippingAddress table
- Order-to-LineItem relationship
- Status change process with validation
The generated metadata is standard qqq metadata - the same format you'd write by hand. qStudio just gets you there faster.
Natural Language Table Design
Describing a table in natural language is faster than writing Java metadata by hand:
You: "Create a product table with SKU, name, description,
price, and inventory count. SKU should be unique."
qStudio generates:
public class ProductTableMetaDataProducer
implements MetaDataProducerInterface<QTableMetaData> {
@Override
public QTableMetaData produce(QInstance qInstance) {
return new QTableMetaData()
.withName("product")
.withFields(List.of(
new QFieldMetaData("id", QFieldType.INTEGER)
.withIsEditable(false),
new QFieldMetaData("sku", QFieldType.STRING)
.withMaxLength(50)
.withIsRequired(true),
new QFieldMetaData("name", QFieldType.STRING)
.withMaxLength(255)
.withIsRequired(true),
new QFieldMetaData("description", QFieldType.TEXT),
new QFieldMetaData("price", QFieldType.DECIMAL)
.withPrecision(10)
.withScale(2),
new QFieldMetaData("inventoryCount", QFieldType.INTEGER)
.withDefaultValue(0)
))
.withUniqueKey(new UniqueKey("sku"));
}
}
You can iterate naturally:
You: "Add a category field that references a category table"
You: "Make description a rich text field"
You: "Add created and modified timestamps"
Each change updates the metadata incrementally.
Report Generation
qStudio excels at turning business questions into reports:
You: "Show me monthly revenue by product category
for the last 12 months"
qStudio generates:
- Report definition with proper grouping
- Date range filter (last 12 months)
- Category dimension
- Revenue summation
- Monthly time series
The generated report uses qqq's native reporting engine, which handles the SQL generation, pagination, and export formats automatically.
Complex Report Example
You: "I need a sales performance dashboard showing:
- Top 10 products by revenue
- Sales by region with month-over-month comparison
- Customer acquisition funnel
- Average order value trend"
qStudio generates four widgets:
1. TopProductsWidget - bar chart with revenue ranking
2. RegionalSalesWidget - table with MoM % change
3. AcquisitionFunnelWidget - funnel visualization
4. AOVTrendWidget - line chart with 30-day rolling average
Process Builder
Business workflows translate directly to qqq processes:
You: "When an order is placed, validate inventory,
reserve stock, send confirmation email,
and notify the warehouse"
qStudio generates:
public class PlaceOrderProcess implements MetaDataProducerInterface<QProcessMetaData> {
@Override
public QProcessMetaData produce(QInstance qInstance) {
return new QProcessMetaData()
.withName("placeOrder")
.withTableName("order")
.withSteps(List.of(
new QBackendStepMetaData()
.withName("validateInventory")
.withCode(new ValidateInventoryStep()),
new QBackendStepMetaData()
.withName("reserveStock")
.withCode(new ReserveStockStep()),
new QBackendStepMetaData()
.withName("sendConfirmation")
.withCode(new SendEmailStep("orderConfirmation")),
new QBackendStepMetaData()
.withName("notifyWarehouse")
.withCode(new SendNotificationStep("warehouse"))
));
}
}
qStudio generates the process structure and placeholder step implementations. You fill in the business logic.
Human-in-the-Loop Review
qStudio never applies changes without your approval. The workflow is:
- Describe what you want in natural language
- Review the generated metadata in a diff view
- Refine by asking for changes or modifications
- Apply when you're satisfied
You: "Create a customer table"
qStudio: "I'll create a customer table with these fields:
- id (auto-increment primary key)
- firstName, lastName (required strings)
- email (unique, required)
- phone (optional)
- createdAt, modifiedAt (timestamps)
Does this look right, or would you like changes?"
You: "Add company name and make it a B2B customer table"
qStudio: "Updated to include:
- companyName (required)
- industry (optional, with common values)
- annualRevenue (optional decimal)
- employeeCount (optional integer)
Ready to apply?"
Schema Understanding
qStudio analyzes your existing schema to make intelligent suggestions:
You: "I need to track which salesperson is assigned to each customer"
qStudio: "I see you have a 'user' table with role-based access.
I'll add a 'salesRepId' field to customer that references
users with the 'sales' role. Should I also create a
'reassignCustomer' process for transferring assignments?"
This context-awareness means suggestions fit your existing data model rather than creating orphaned tables.
Integration with Development Workflow
qStudio generates standard qqq metadata that goes into your codebase:
# qStudio writes to your project
src/main/java/
com/example/app/
metadata/
CustomerTableMetaDataProducer.java # Generated
OrderTableMetaDataProducer.java # Generated
PlaceOrderProcess.java # Generated
# Version control as usual
git add .
git commit -m "Add customer management tables"The generated code follows qqq conventions and integrates with your existing application.
Best Practices
Start with the data model. Define your core tables first, then build processes and reports on top of them.
Be specific about constraints. "Email should be unique" is better than "add an email field."
Iterate in small steps. Add one feature at a time rather than describing an entire system at once.
Review before applying. qStudio shows you exactly what it will generate. Read it.
Use existing patterns. If you have an existing coding style, share examples with qStudio.
What qStudio Doesn't Do
qStudio generates metadata and boilerplate, not business logic. You still write:
- Custom validation rules
- Complex calculation logic
- External API integrations
- Security policies beyond basic permissions
Think of qStudio as handling the 80% of code that's structural, freeing you to focus on the 20% that's unique to your business.
Getting Started
qStudio is available as part of the qqq development toolkit. Install it alongside your qqq project:
# Install qStudio CLI
npm install -g @qrun/qstudio
# Connect to your project
qstudio init --project ./my-qqq-app
# Start the AI assistant
qstudio chatOr use the web interface at studio.qrun.io for a visual experience.
Ready to accelerate your qqq development? Try qStudio with your next project: