The Framework

qqq Framework

Enterprise features built-in, not bolted-on. The open-source Java framework that eliminates 80% of boilerplate while giving you full code ownership.

What you get out of the box

Stop rebuilding the same enterprise features for every project. qqq provides production-ready capabilities from day one.

Meta-Data Driven

Define your tables, fields, and relationships declaratively. Your schema becomes your application with automatic CRUD, validation, and UI generation.

Authentication & SSO

OIDC, SAML, OAuth2, and custom auth providers. Integrate with Auth0, Okta, Azure AD, or roll your own - all with zero code.

Complete Audit Trails

Every action logged automatically. Who changed what, when, and why. Built for SOC2, HIPAA, and enterprise compliance requirements.

Multi-Backend Support

Connect to PostgreSQL, MySQL, MongoDB, REST APIs, S3, and more. Query across multiple data sources with a unified API.

Workflow Engine

Visual workflow designer for approvals, notifications, and automations. Schedule jobs, trigger events, add human-in-the-loop.

Role-Based Access Control

Fine-grained permissions at table, field, and record level. Declarative security that's auditable and maintainable.

Auto-Generated Admin UI

Production-ready admin interface from your schema. Search, filter, bulk edit, export - all ready without writing frontend code.

API First

Auto-generated REST APIs with OpenAPI documentation. GraphQL support coming soon. Build headless or use the included UI.

Reporting & Analytics

Built-in reporting engine with export capabilities. Create dashboards, schedule reports, and visualize your data.

See the Difference

Define your data model once. Get CRUD, APIs, UI, auth, and audit logging automatically.

With qqq

1 file, 18 lines, done
OrderTable.java
public class OrderTable implements TableMetaDataProducer {

   public QTableMetaData produce(QInstance qInstance) {
      return new QTableMetaData()
         .withName("order")
         .withFields(List.of(
            new QFieldMetaData("id", INTEGER)
               .withIsPrimaryKey(true),
            new QFieldMetaData("customerId", INTEGER)
               .withIsRequired(true),
            new QFieldMetaData("orderDate", DATE_TIME),
            new QFieldMetaData("status", STRING)
               .withPossibleValues("orderStatus"),
            new QFieldMetaData("total", DECIMAL)
         ))
         .withAuditRules(AuditLevel.RECORD);
   }
}

Traditional Approach

12+ files, 0 lines, still typing...
Order.java, OrderDTO.java, OrderService.java, OrderController.java...

That's it. You now have CRUD, REST API, Admin UI, audit logs, permissions, and validation.

Add Authentication

qInstance.withAuthentication(
   new QAuthenticationMetaData()
      .withType(QAuthenticationType.OAUTH2)
      .withOAuth2Provider("auth0")
);

One configuration. Full OAuth2/OIDC support.

Add Permissions

new QPermission()
   .withName("sales")
   .withTablePermissions(List.of(
      new QTablePermission()
         .withTableName("order")
         .withAllowInsert(true)
         .withAllowUpdate(true)
   ));

Declarative RBAC. Field-level control available.

Add a Process

new QProcessMetaData()
   .withName("approveOrder")
   .withSteps(List.of(
      new ValidateStep(),
      new UpdateStatusStep(),
      new NotifyCustomerStep()
   ));

Chain steps together. Add approvals, automations.

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

Auto-generated REST endpoints with OpenAPI docs

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

Auth, validation, audit happen automatically

3

APIs Generated

REST endpoints with docs, ready to use

4

UI Rendered

Production admin UI from your schema

How qqq Compares

qqq includes enterprise features that other frameworks require plugins, libraries, or custom code to achieve.

FeatureqqqSpring BootRuby on RailsDjango
CRUD OperationsAutomatic from schemaManual: Entity + Repository + Service + ControllerScaffolding + customizationAdmin auto, API manual
Admin UIAuto-generated, production-readyBuild yourself or add libraryGems like ActiveAdminDjango Admin (basic)
REST APIAuto-generated with OpenAPIManual controllers + SwaggerManual or rails-apiDRF (separate library)
AuthenticationBuilt-in, declarative configSpring Security (complex)Devise gemdjango-allauth
Audit LoggingBuilt-in, automaticHibernate Envers or customPaperTrail gemdjango-auditlog
RBAC PermissionsBuilt-in, field-levelManual or Spring ACLCanCanCan/Pundit gemsdjango-guardian
Multi-tenancyBuilt-in supportCustom implementationApartment gemdjango-tenants
Time to First CRUDMinutesHours30 minutes30 minutes

10x Faster Development

Build in days what takes weeks with traditional frameworks. Focus on business logic, not boilerplate.

Enterprise-Ready Day One

Auth, audit, RBAC, multi-tenancy built-in. No plugin hunting or integration headaches.

Full Code Ownership

It's just Java. Escape hatches everywhere. No lock-in, no magic you can't understand.

Ready to build faster?