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.xmlfiles into strongly-typed schema objects. - The view-model schema —
ObjectView,ObjectSql, theEditorFieldfamily, theFormControllayout tree (Section / Tab / Item / Line / Sub / Grid / Row / Column), and theEntitySchema/Fieldmodel. - The Roslyn incremental generator — reads
*.entity.xmlfiles passed asAdditionalFilesand emits, into the consuming project:- an EF entity class per entity (deriving
EntityTraits<long>), with enums forSelectfields and FK navigations forLookupfields; - an
EntityBaseConfiguration<TEntity,long>per entity (table / schema / indexes / relationships); - a
DbSet<>for each entity, emitted as a partial of your hostDbContext(the class name is configurable via theGenieDbContextNamebuild property; defaultZedContext).
- an EF entity class per entity (deriving
Because the generated configurations are IEntityTypeConfiguration<T> in your assembly, your
GenieContext-derived context registers them automatically.
Genie.Engine — the runtime
Section titled “Genie.Engine — the runtime”The net10.0 runtime that host apps reference. Seven concern roots:
Api/ Controllers + SignalR hubs (the HTTP surface), segregated per areaCore/ Foundation, no business logic: Abstractions, Framework, PersistenceServices/ Engine-internal runtime services: Object, ViewResolution, Authorization, …Features/ Bounded capabilities: Identity, Workflow, Wizard, Assistant, Reports, …Contracts/ Request/result DTOsHandlers/ Pluggable export/import handlersHosting/ Exception handler, middleware, security, DI compositionHighlights:
- 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
modelsdirectory 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.
genie-engine-ui — the React front end
Section titled “genie-engine-ui — the React front end”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.