Core Concepts

Understand tables, processes, apps, and metadata

The Metadata Model

qqq uses metadata to define your application structure. Instead of writing boilerplate code, you declare what you want.

Tables

Tables represent your data model. They're defined as Java classes with annotations:

Java
@QTableMetaData(name = "person")
public class PersonTable {
    @QField(isPrimaryKey = true)
    public Integer id;
    
    @QField(isRequired = true)
    public String name;
    
    @QField
    public String email;
}

Processes

Processes are multi-step workflows:

Java
@QProcessMetaData(name = "greet")
public class GreetProcess {
    // Steps, inputs, outputs
}

Apps

Apps combine tables and processes into a deployable unit:

Java
@QAppMetaData(name = "myApp")
public class MyApp {
    // Tables, processes, widgets
}

qBits

qBits are reusable modules that add functionality:

Bash
qctl qbit add auth-cognito

Next Steps

Ready to build? Explore our Guides for step-by-step tutorials.

Powered by qqq