Beginner10 minutes

Your First qqq App

Build a simple task management app in 10 minutes and see the magic of metadata-driven development.

Prerequisites

  • Java 21+ installed (java -version)
  • Maven 3.6+ installed (mvn -version)

Step 1: Create Your Project

Create a new qqq project using the Maven archetype:

Bash
mvn archetype:generate \
  -DarchetypeGroupId=io.qrun \
  -DarchetypeArtifactId=qqq-archetype \
  -DgroupId=com.example \
  -DartifactId=my-tasks \
  -Dversion=1.0-SNAPSHOT
Bash
cd my-tasks

Step 2: Define Your Table

Create a Task table by defining its metadata. CreateTaskTableMetaDataProducer.java:

Java
public class TaskTableMetaDataProducer
   implements MetaDataProducerInterface<QTableMetaData>
{
   public static final String NAME = "task";

   @Override
   public QTableMetaData produce(QInstance qInstance)
   {
      return new QTableMetaData()
         .withName(NAME)
         .withLabel("Task")
         .withPrimaryKeyField("id")
         .withFields(List.of(
            new QFieldMetaData("id", QFieldType.INTEGER),
            new QFieldMetaData("title", QFieldType.STRING)
               .withIsRequired(true),
            new QFieldMetaData("description", QFieldType.TEXT),
            new QFieldMetaData("completed", QFieldType.BOOLEAN)
               .withDefaultValue(false),
            new QFieldMetaData("dueDate", QFieldType.DATE)
         ));
   }
}

Step 3: Run Your App

Start your application:

Bash
mvn compile exec:java

Open http://localhost:8080 and you have a fully functional CRUD application with search, filtering, and pagination.

What You Get Automatically

Admin UI

Full CRUD interface with search, filtering, sorting, and pagination.

REST API

Complete API endpoints at /api/task with documentation.

Database Schema

Auto-generated from your metadata, no SQL required.

Validation

Required fields, type checking, and custom rules enforced automatically.

Next Steps

Powered by qqq