Build your first app on Createrun.
Createrun is an on-premises low-code platform for building enterprise applications — forms, workflows, BPM processes, and queries that compile into strongly-typed C# assemblies you fully own. An integrated AI agent with 80+ tools can build alongside you, and finished apps ship through a signed marketplace. This guide takes you from a fresh install to a published app.
A 30-minute path from a fresh instance to a published marketplace app. Community Edition is free to install; the same runtime powers every tier — licensing is usage-metered, never feature-gated.
1. From install to Editor in 30 minutes
Install and start an instance with the Createrun Setup installer, sign in to the browser-basedEditor(Developer Suite) with your IDM account, and create a workspace bound to your instance. Every artefact you design — forms, workflows, queries, BPM flows — compiles into strongly-typed assemblies on save.
You build apps from four primitives:
| Form | A data entry / display surface (fields, pages, parts) |
| Query | A parameterised SQL read against the app's data source |
| Workflow | A server-side automation (tasks, conditions, parallel branches) |
| Gate method | The HTTP entry point the runtime exposes for an app action |
2. Your first app — a contact form
- Create a solution and module.In the Editor,New → Solution, name it
HelloContacts. Add a moduleContacts. - Create a form.New → Form→
ContactForm. Add a requiredNametext field, anEmailfield withemailvalidation, and aSubmitbutton part. - Bind the form to storage.Open the form's data binding panel and bind a table or stored procedure. The framework generates the typed model and persistence calls.
- Wire the submit action.Set the button action toInsert, or call a workflow (§4).
- Compile.Save the form; the Compiler pipeline produces the app assemblies. Failures surface as Roslyn diagnostics mapped to
COMPILER_SYNTAX/COMPILER_SEMANTIC. - Run it.Deploy to your instance and open it through CRPortal / the virtual site gate.
Editor gesture tip: removing a field = select it + ribbonSelected → Remove(notRemove Completely, which deletes the whole form).
3. Queries and workflows
Aqueryis parameterised SQL:New → Query→ContactsByEmail, bodySELECT Name, Email FROM Contacts WHERE Email = @email, declare the@emailparameter, then bind the result to a grid or call it from a workflow. Queries compile with the rest of the app — a bad query fails at build time, not at runtime.
Aworkflowautomates server-side logic: add condition nodes and parallel tasks (audit row + notification), then bind the workflow to the form'sSubmitaction. Workflows can be promoted to BPM flows for long-running, human-in-the-loop processes.
4. Publishing to the Store
- In the Editor, choosePublish to Store. The platform collects your sources and manifest, generates a checksum map, and streams a signed
.crpckpackage (ECDSA P-256) to the Store API. - The Store validates your IDM JWT, stores the package, re-signs the manifest, and sets the version status to
submitted. - A Store admin reviews the submission; on approval the status moves
submitted → approved → publishedand you receive an email. - Customers install your published app from the CRPortal Marketplace; the install pipeline verifies the license JWT and the package signature.
Common publish failures map to documented codes —STORE_VERSION_CONFLICT(bump the version),STORE_CHECKSUM_MISMATCH(rebuild the package),STORE_SIGNATURE_INVALID(signing key mismatch). See theerror-code reference. Failed installs keep a step-by-step trace your Store admin can inspect, and you can file a ticket from/Supportwith the trace id.
5. The gate HTTP contract
Apps expose actions asgate methodsover HTTP. The runtime routes a request to a gate method by name.
- URL shape:
/gate/{app}/gatemethods.{group}.{method}(lowercase), e.g./gate/crportal/gatemethods.integration.installapp. - Envelope:JSON with PascalCase fields, wrapped in the standard
Response<T>envelope carrying acode, an optionaldatapayload, and anerrors[]array on failure. - Encoding:UTF-8; the API is tolerant of common encoding quirks.
- Auth:instance/developer JWT Bearer (IDM OIDC). Anonymous gate methods are the exception, not the rule.
- Error mapping:every non-success response carries a registry
code— resolve it viaGET /api/v1/error-codes/{code}or thereference page.
| Method | Path | Returns |
|---|
GET | /api/v1/error-codes | All codes (code, httpStatus, description, namespace) |
GET | /api/v1/error-codes?namespace=VAL | Codes in one namespace |
GET | /api/v1/error-codes/{code} | Single code detail |
6. Getting help
Error codes:reference pageorGET /api/v1/error-codes(public, no auth). Support: file a ticket at/Supportand attach the install trace id when reporting a failed install. Developer tooling overview:Developer Hub.