Skip to content

The three packages

This monorepo publishes three packages. Install/auth details are in Consuming the packages.

Package Type Path
Genie.Source NuGet (netstandard2.0) src/api/Genie.Source
Genie.Engine NuGet (net10.0) src/api/Genie.Engine
@mr-aybee/genie-engine-ui npm (React 19 + TS) src/ui/genie-engine-ui

Genie.Source — the contract & code generator

Section titled “Genie.Source — the contract & code generator”

The compile-time half and the source of truth for the XML contract.

  • XML parsers (ViewSchemaXmlParser, EntitySchemaXmlParser, NavbarXmlParser, …) — turn the *.entity.xml / *.view.xml / *.navbar.xml files into strongly-typed schema objects.
  • The view-model schemaObjectView, ObjectSql, the EditorField family, the FormControl layout tree (Section / Tab / Item / Line / Sub / Grid / Row / Column), and the EntitySchema / Field model.
  • The Roslyn incremental generator — reads *.entity.xml files passed as AdditionalFiles and emits, into the consuming project:
    • an EF entity class per entity (deriving EntityTraits<long>), with enums for Select fields and FK navigations for Lookup fields;
    • an EntityBaseConfiguration<TEntity,long> per entity (table / schema / indexes / relationships);
    • a DbSet<> for each entity, emitted as a partial of your host DbContext (the class name is configurable via the GenieDbContextName build property; default ZedContext).

Because the generated configurations are IEntityTypeConfiguration<T> in your assembly, your GenieContext-derived context registers them automatically.

The net10.0 runtime that host apps reference. Seven concern roots:

Api/ Controllers + SignalR hubs (the HTTP surface), segregated per area
Core/ Foundation, no business logic: Abstractions, Framework, Persistence
Services/ Engine-internal runtime services: Object, ViewResolution, Authorization, …
Features/ Bounded capabilities: Identity, Workflow, Wizard, Assistant, Reports, …
Contracts/ Request/result DTOs
Handlers/ Pluggable export/import handlers
Hosting/ Exception handler, middleware, security, DI composition

Highlights:

  • Unified ObjectView — a view is one polymorphic object; whether it behaves as a grid or a form is inferred from which SQL blocks it declares. The runtime is a facade (IObjectService) over focused chunk services (query / form / action).
  • Model migration on startup — the migration service scans the models directory and applies each file via a per-type strategy (entity → store, view → ViewStore, SQL → executed, navbar → synced). See Model migration.
  • Identity & RBAC — JWT + cookie auth, MFA/TOTP, sessions; per-object View/Create/Update/Delete verbs re-validated on every operation. Also workflow, wizard, reports, sequences, search and notifications.

A configurable React 19 + TypeScript app. You call createGenieApp(config) and it renders:

  • GenieTable / GenieForm / GenieView — driven by the engine’s metadata + values;
  • GenieNavbar / GenieLayout / GenieRouter/table|form|view/{name} routing;
  • the auth experience (login, MFA, profile), theme, and an eval-free expression engine for field required/disabled/hidden/value rules.

The DOM/container ids are generated client-side — the server ships no markup. See Frontend & Theming.