The Framework

qqq Framework

Build data applications with Java metadata, backend actions, and reusable process steps. Evaluate QQQ 4.0 with the source sample and verify your application against the exact candidate.

Capabilities to configure and extend

Reuse framework facilities while keeping application behavior explicit. Validate the exact release with your data, identity provider, and workflows.

Metadata-driven applications

Define tables, fields, relationships, apps, and processes in Java. Manage the database schema explicitly.

Authentication integration

Select and configure an authentication provider. Test login, logout, session handling, and denied access.

Backend modules

Use relational, MongoDB, SQLite, file-system, S3, or REST modules. Supported operations vary by backend.

Java process steps

Compose process metadata with Java backend steps. Implement business rules and recovery behavior explicitly.

Application permissions

Configure the permission rules for your application and test them across queries, processes, and custom entry points.

Metadata-driven dashboard

Use dashboard 0.41.0 with compatible table, app, process, and widget metadata. Review the sample UI.

Audit requirements

Configure audit-related facilities and verify the events, actor context, retention, and access rules your application needs.

Application APIs

Use the selected middleware/API module and its actual contract. Automatic GraphQL generation is outside this release scope.

Reporting and export

Configure reports and supported export formats for your backend, then test representative data and access restrictions.

Start with table metadata

Define fields and map a table to a configured backend. Register it in your QInstance, configure permissions, and use the framework actions and dashboard.

Java
QTableMetaData person = new QTableMetaData()
   .withName("person")
   .withLabel("People")
   .withBackendName("rdbmsBackend")
   .withPrimaryKeyField("id")
   .withField(new QFieldMetaData("id", QFieldType.INTEGER))
   .withField(new QFieldMetaData("name", QFieldType.STRING)
      .withIsRequired(true));

This fragment assumes the QQQ imports and an existing backend. The table guide and runnable sample show the surrounding setup.

Architecture Overview

qqq's layered architecture keeps your code clean while providing powerful capabilities at every level.

Frontend Layer

Auto-generated Admin UI or your custom frontend

ReactMaterial UICustom

API Layer

Configured middleware and application API contracts

JavalinRESTOpenAPI

qqq Core

Actions, processes, validation, auth, audit

AuthRBACAuditWorkflows

MetaData Layer

Your schema definitions drive everything above

TablesFieldsJoinsProcesses

Backend Modules

Pluggable data sources and integrations

PostgreSQLMySQLMongoDBRESTS3
1

Define MetaData

Tables, fields, relationships

2

Core Executes

Configured actions, validation, and permission checks

3

APIs Generated

Register and verify the selected API module

4

UI Rendered

Dashboard from application metadata

Evaluate QQQ with a real workflow

Start with one table and one process from your application. Compare the amount of custom behavior, backend compatibility, permission tests, and operational work against your requirements. Development speed and production readiness depend on that workload.

Build and test the first application

Ready to build faster?