Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 29 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Scene

**Describing a user interface without describing a platform** — Scene is the UI model of the Cratis
model-first layer (experimental).

The object model and runtime for Screenplay-based UIs: `Scene.Model` (platform-agnostic screens, layouts,
forms, contribution points, ui profiles and themes), `Scene.Engine` (binding/resolution runtime), and
`Scene.React` (the React renderer).
Expand All @@ -18,8 +21,13 @@ forms, contribution points, ui profiles and themes), `Scene.Engine` (binding/res

## Description

Scene owns the *object model and runtime* half of the Screenplay stack. `Scene.Model` is the platform-agnostic
C# object model that Stage translates Screenplay's parsed language constructs into, and that Studio's
Scene owns the *object model and runtime* half of the Screenplay stack. In the model-first pipeline,
[Screenplay](https://github.com/Cratis/Screenplay) describes an event-sourced, CQRS system,
[Stage](https://github.com/Cratis/Stage) renders it into a running application, and Scene is how that
application's user interface is described — independently of any rendering platform.

`Scene.Model` is the platform-agnostic
C# object model that [Stage](https://github.com/Cratis/Stage) translates Screenplay's parsed language constructs into, and that [Studio](https://github.com/Cratis/Studio)'s
design-time tooling reads and writes. `Scene.Engine` walks that graph, resolves bindings (data, action, form,
navigation contribution) and drives whichever renderer is plugged in — it does not know React exists.
`Scene.React` is one renderer implementing the abstract vocabulary against real React/DOM; sibling positions
Expand All @@ -38,3 +46,22 @@ Cratis is an open community, and we are glad to help users, teams evaluating the
| Discord | Join the community on [Discord](https://discord.gg/kt4AMpV8WV) for questions and discussions |
| GitHub Issues | [Report bugs or request features](https://github.com/Cratis/Scene/issues) |
| Documentation | Read the docs at [cratis.io](https://cratis.io) |

## The Cratis ecosystem

This project is part of [Cratis](https://www.cratis.io) — free, MIT-licensed tools for building event-sourced and CQRS applications.

- **[Chronicle](https://github.com/Cratis/Chronicle)** — event-sourcing database and runtime. Orleans-based kernel, pluggable storage (MongoDB default; PostgreSQL, SQL Server, SQLite, in-memory), language-agnostic gRPC contracts. [Docs](https://www.cratis.io/chronicle/)
- **Chronicle clients** — first-class [.NET SDK](https://github.com/Cratis/Chronicle), plus [TypeScript](https://github.com/Cratis/Chronicle.TypeScript), [Kotlin/Java](https://github.com/Cratis/Chronicle.Kotlin), and [Elixir](https://github.com/Cratis/Chronicle.Elixir); [Python](https://github.com/Cratis/Chronicle.Python) coming soon (pre-alpha). AI agents connect through the [Chronicle MCP server](https://github.com/Cratis/Chronicle.Mcp).
- **[Arc](https://github.com/Cratis/Arc)** — opinionated CQRS framework for ASP.NET Core with commands, queries, validation, authorization, and TypeScript proxy generation. Works without event sourcing. [Docs](https://www.cratis.io/arc/)
- **[Components](https://github.com/Cratis/Components)** — React components aligned with Arc patterns. [Docs](https://www.cratis.io/components/)
- **[CLI](https://github.com/Cratis/cli) + Workbench** — inspect and diagnose Chronicle from the terminal or the browser. [Docs](https://www.cratis.io/cli/)
- **Model-first layer (experimental)** — [Studio](https://github.com/Cratis/Studio), [Screenplay](https://github.com/Cratis/Screenplay), [Stage](https://github.com/Cratis/Stage), Scene (this repository), [Prologue](https://github.com/Cratis/Prologue)
- **Supporting** — [Fundamentals](https://github.com/Cratis/Fundamentals), [Specifications](https://github.com/Cratis/Specifications), [Synopsis](https://github.com/Cratis/Synopsis), [Lens](https://github.com/Cratis/Lens), [Narrator](https://github.com/Cratis/Narrator), and free [AI tooling](https://github.com/Cratis/AI) (preview); [Ensemble](https://github.com/Cratis/Ensemble) coming soon (pre-release)
- **[Samples](https://github.com/Cratis/Samples)** — runnable event sourcing and CQRS samples for the whole stack

Everything Cratis publishes today is MIT licensed and free to use.

---

Part of the [Cratis](https://www.cratis.io) platform · [MIT](./LICENSE)
10 changes: 10 additions & 0 deletions Source/JavaScript/blueprint.components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
"name": "@cratis/scene.blueprint.components",
"version": "1.0.0",
"description": "A blueprint of Arc-bound screen and dialog templates: full pages built from Cratis Components composites, so a data list, a command form or a master-detail screen is a template rather than something you assemble.",
"keywords": [
"cratis",
"scene",
"react",
"ui",
"templates",
"blueprint",
"cqrs",
"event-sourcing"
],
"author": "Cratis",
"license": "MIT",
"repository": {
Expand Down
10 changes: 10 additions & 0 deletions Source/JavaScript/blueprint.default/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
"name": "@cratis/scene.blueprint.default",
"version": "1.0.0",
"description": "The default blueprint: application shell layouts, the screen and dialog templates that go inside them, the components that fill their slots, and two themes.",
"keywords": [
"cratis",
"scene",
"react",
"ui",
"templates",
"blueprint",
"themes",
"low-code"
],
"author": "Cratis",
"license": "MIT",
"repository": {
Expand Down
11 changes: 11 additions & 0 deletions Source/JavaScript/components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@
"name": "@cratis/scene.components",
"version": "1.0.0",
"description": "The Cratis Components package: exposes @cratis/components' Arc-bound data, form and dialog composites as Scene components. Built on PrimeReact and Tailwind, and declares both as dependencies.",
"keywords": [
"cratis",
"scene",
"react",
"ui",
"components",
"primereact",
"tailwind",
"cqrs",
"event-sourcing"
],
"author": "Cratis",
"license": "MIT",
"repository": {
Expand Down
10 changes: 10 additions & 0 deletions Source/JavaScript/engine/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
"name": "@cratis/scene.engine",
"version": "1.0.0",
"description": "The Scene runtime: walks a Scene element tree and drives whichever renderer is plugged in. Does not know React, or any other rendering platform, exists.",
"keywords": [
"cratis",
"scene",
"ui",
"runtime",
"renderer",
"event-modeling",
"cqrs",
"low-code"
],
"author": "Cratis",
"license": "MIT",
"repository": {
Expand Down
10 changes: 10 additions & 0 deletions Source/JavaScript/model/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
"name": "@cratis/scene.model",
"version": "1.0.0",
"description": "The TypeScript mirror of Cratis.Scene.Model — the platform-agnostic Screen object model.",
"keywords": [
"cratis",
"scene",
"ui",
"ui-model",
"event-modeling",
"event-sourcing",
"cqrs",
"low-code"
],
"author": "Cratis",
"license": "MIT",
"repository": {
Expand Down
10 changes: 10 additions & 0 deletions Source/JavaScript/primereact/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
"name": "@cratis/scene.primereact",
"version": "1.0.0",
"description": "The PrimeReact component package: maps Scene's abstract component names onto real PrimeReact components, and PrimeReact's free themes onto Scene themes.",
"keywords": [
"cratis",
"scene",
"react",
"ui",
"primereact",
"components",
"themes",
"low-code"
],
"author": "Cratis",
"license": "MIT",
"repository": {
Expand Down
10 changes: 10 additions & 0 deletions Source/JavaScript/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
"name": "@cratis/scene.react",
"version": "1.0.0",
"description": "The React renderer implementing Scene.Engine's Renderer contract against real React/DOM.",
"keywords": [
"cratis",
"scene",
"react",
"ui",
"renderer",
"event-modeling",
"cqrs",
"low-code"
],
"author": "Cratis",
"license": "MIT",
"repository": {
Expand Down
9 changes: 9 additions & 0 deletions Source/JavaScript/tailwind/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@
"name": "@cratis/scene.tailwind",
"version": "1.0.0",
"description": "The Tailwind styling package: a Scene package declaring the utility CSS system component libraries are written against, plus the themes that ride on it.",
"keywords": [
"cratis",
"scene",
"react",
"ui",
"tailwind",
"themes",
"low-code"
],
"author": "Cratis",
"license": "MIT",
"repository": {
Expand Down
Loading