Files
james.maesandClaude Sonnet 5.5 a389bfb8b0
QRun-IO/ci-policy: ci / fork-guard (pull_request) Skipped
QRun-IO/ci-policy: native / fork-deny (pull_request) Skipped
QRun-IO/ci-policy: native / dotnet-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / Scoped workflow [workflow 9cb8c13124a99d18da83cbcd4faa795859ac9e55] (pull_request) Successful in 7s
QRun-IO/ci-policy: native / native-result (pull_request) Successful in 5s
QRun-IO/ci-policy: ci / head-profile (pull_request) Skipped
QRun-IO/ci-policy: ci / repository-policy (pull_request) Skipped
QRun-IO/ci-policy: ci / application-template-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / gradle-1 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-core-2-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-4 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-frontend-browser-5 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-7 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-7-head (pull_request) Skipped
QRun-IO/ci-policy: ci / node-8 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-9 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-10 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-playwright-11 (pull_request) Skipped
QRun-IO/ci-policy: ci / repository-policy-12 (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-13 (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-14 (pull_request) Skipped
QRun-IO/ci-policy: ci / android-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / original-business (pull_request) Skipped
QRun-IO/ci-policy: ci / original-mcp (pull_request) Skipped
QRun-IO/ci-policy: ci / original-voyage (pull_request) Skipped
QRun-IO/ci-policy: ci / original-cli (pull_request) Skipped
QRun-IO/ci-policy: ci / not-enrolled (pull_request) Skipped
QRun-IO/ci-policy: ci / shared-pipeline (pull_request) Skipped
QRun-IO/ci-policy: ci / ci-result (pull_request) Successful in 8s
maven / build (push) Successful in 4m31s
build / maven (push) Successful in 4m30s
build: pin QQQ 4.1.0-RC.22 from the Gitea registry and update README status
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 17:20:10 -06:00

2.4 KiB

qbit-custom-apps

License

Status: 0.1 release line, built on QQQ 4.1 (4.1.0-RC.22) and qbit-user-role-permissions 0.33.0-RC.1. Published to the QRun-IO Gitea Maven registry only (https://git.kof22.com/api/packages/QRun-IO/maven); release candidates are 0.1.0-RC.N.

QBit that aims to let qqq apps register custom application screens declaratively — pages built from widgets, forms, and table views — without writing dedicated front-end components.

Type: Application QBit For: Developers building qqq apps that need bespoke screens beyond standard table CRUD

Why this exists

qqq's standard dashboard renders auto-generated screens from table metadata. Most apps eventually need pages that don't map to a single table — operator dashboards, configurator wizards, multi-step workflows that pull data from several sources, embedded Looker dashboards, etc. qbit-custom-apps is intended to let those screens be declared as metadata.

What it provides

The repository contains the following package layout:

src/main/java/com/kingsrook/qbits/customapps/
├── definition/   # CustomAppDefinition and related metadata
├── model/        # Data models backing custom apps
├── metadata/     # Metadata producers and registrators
└── widgets/      # Widget composition utilities

How it relates to other qqq repos

  • Declared dependencies: qqq-backend-core, qqq-middleware-api (optional), qqq-middleware-javalin, qbit-user-role-permissions; test scope: qqq-backend-module-rdbms, qqq-backend-module-postgres. All versions come from the qqq-bom-pom import (4.1.0-RC.22).
  • Inherits from: qbit-build-parent (in the qbit-bom repo).
  • Frontend pair: Custom apps render via the standard qqq dashboard; no separate frontend component needed.

Known gaps

  • Integration tests (CustomAppsPostgresTest) use a PostgreSQL Testcontainer, so building needs Docker.
  • Pre-1.0: the metadata and permission model may still change between release candidates.
  • Depends on QQQ 4.1 release candidates, so it is not yet pinned to a final QQQ 4.1.0.

License

Apache License 2.0 — see LICENSE.

Contributing

See CONTRIBUTING.md, CODE_OF_CONDUCT.md, CODE_STYLE.md, and SECURITY.md.