= QQQ :doctype: article :toc: left :toclevels: 2 :source-highlighter: coderay include::Introduction.adoc[leveloffset=+1] == Meta Data Production include::metaData/MetaDataProduction.adoc[leveloffset=+1] == Meta Data Types // Organizational units include::metaData/QInstance.adoc[leveloffset=+1] include::metaData/Backends.adoc[leveloffset=+1] include::metaData/Apps.adoc[leveloffset=+1] // Primary meta-data types include::metaData/Tables.adoc[leveloffset=+1] include::metaData/Processes.adoc[leveloffset=+1] include::metaData/Widgets.adoc[leveloffset=+1] // Helper meta-data types include::metaData/Fields.adoc[leveloffset=+1] include::metaData/PossibleValueSources.adoc[leveloffset=+1] include::metaData/Joins.adoc[leveloffset=+1] include::metaData/SecurtiyKeyTypes.adoc[leveloffset=+1] include::metaData/Reports.adoc[leveloffset=+1] include::metaData/Icons.adoc[leveloffset=+1] include::metaData/PermissionRules.adoc[leveloffset=+1] == Services include::misc/Javalin.adoc[leveloffset=+1] include::misc/ScheduledJobs.adoc[leveloffset=+1] === API server (OpenAPI) #todo# == Custom Application Code include::misc/QContext.adoc[leveloffset=+1] include::misc/QRecords.adoc[leveloffset=+1] include::misc/QRecordEntities.adoc[leveloffset=+1] include::misc/ProcessBackendSteps.adoc[leveloffset=+1] include::misc/RenderingWidgets.adoc[leveloffset=+1] === Table Customizers #todo# == QQQ Core Actions include::actions/QueryAction.adoc[leveloffset=+1] include::actions/GetAction.adoc[leveloffset=+1] === CountAction #todo# === AggregateAction #todo# include::actions/InsertAction.adoc[leveloffset=+1] === UpdateAction #todo# === DeleteAction #todo# === AuditAction #todo# == QQQ Default Implementations include::implementations/TableSync.adoc[leveloffset=+1] // later... include::actions/RenderTemplateAction.adoc[leveloffset=+1] == QQQ Utility Classes include::utilities/RecordLookupHelper.adoc[leveloffset=+1]