@cratis/showrunner.boxoffice.react 1.15.0 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +43 -18
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Showrunner
2
2
 
3
- > Showrunner is a set of ready-made product parts for applications built on [Cratis](https://www.cratis.io) — drop-in backend and frontend packages, built as Arc and Chronicle vertical slices.
3
+ Cratis Showrunner adds support, licensing, announcements, product feedback and email to applications built on [Cratis](https://www.cratis.io). It provides .NET libraries, TypeScript clients generated from backend commands and queries, and React components. It also includes Stage Manager, a Kubernetes operator for running applications.
4
+
5
+ Choose the part that matches what your application needs. The libraries run inside the application that hosts them; Stage Manager runs as a service in your cluster. The sections below lead to setup instructions for each part.
4
6
 
5
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
8
  [![Build](https://github.com/Cratis/Showrunner/actions/workflows/build.yml/badge.svg)](https://github.com/Cratis/Showrunner/actions/workflows/build.yml)
@@ -9,24 +11,39 @@
9
11
 
10
12
  ## Usher
11
13
 
12
- **Usher** is the support part: it lets the users of an application report issues and hold support conversations with the people running it. It is a library an application hosts, not a service of its own — the backend package adds Usher's commands, queries and events to the host's Arc application and Chronicle event store, and the frontend packages give the host's React UI the generated proxies and components to drive them.
14
+ Usher lets users report issues and carry on support conversations from the application. Its backend adds commands, queries and events to the host's Arc application and Chronicle event store; its frontend packages supply the generated TypeScript clients and React components.
15
+
16
+ Usher captures errors and lets a reporter grant time-limited support access through AuthProxy's on-behalf sessions, where support acts as the reporter. Public events connect the application to a support desk. Start with [the Usher documentation](./Documentation/Usher/index.md) to connect those two sides.
17
+
18
+ ## Box Office
19
+
20
+ Box Office lets a managed product honor the licensing decisions its operator makes for each tenant: trials, seats, modules, compute allowances and suspension. The product receives those decisions and reports back through public events. The operator's catalog holds offers and prices; the product declares what it sells and meters compute use. Follow [the Box Office documentation](./Documentation/BoxOffice/index.md) to separate the operator's responsibilities from the product's.
21
+
22
+ ## Marquee
23
+
24
+ Marquee brings product announcements to the people they concern. The people running the product choose the audience, display and time window; the product shows the announcement as a banner or dialog. Add `<Marquee />` to the application shell to use its queries and commands. Follow [the Marquee documentation](./Documentation/Marquee/index.md) to add announcements or host the authoring side.
13
25
 
14
- Usher covers reporting an issue, error capture, the conversation, time-limited support access through AuthProxy's on-behalf sessions and the exchange of events with a desk; see [Documentation](./Documentation/Usher/index.md).
26
+ ## Notes
15
27
 
16
- **Box Office** is the licensing part: trials, seats, modules, compute allowances and suspension, decided by the operator of a managed product and honored by the product. Its event contracts, its catalog of offers and prices, and a product's offering declaration and compute metering are in place; see [Documentation](./Documentation/BoxOffice/index.md).
28
+ Notes connects product feedback to what the user was looking at: a slice of application behavior, a screen or a single component. The people building the application receive that context as events and answer the note. The application hosts `Cratis.Showrunner.Notes`; the builder hosts `Cratis.Showrunner.Notes.Collecting`. Use [the Notes documentation](./Documentation/Notes/index.md) to connect feedback collection and replies.
17
29
 
18
- **Marquee** is the announcements part: the people running a product write an announcement with an audience, a display and an exact window, and the product shows it to the people it reaches, as a banner or a dialog. Drop `<Marquee />` into the application shell and it brings its own queries and commands; see [Documentation](./Documentation/Marquee/index.md).
30
+ ## Herald
19
31
 
20
- **Notes** is the product feedback part: the users of an application give a note about what they are looking at — the slice, the screen or a single component — and the people building the application receive it as events and answer it. The application hosts `Cratis.Showrunner.Notes`, the builder hosts `Cratis.Showrunner.Notes.Collecting`; see [Documentation](./Documentation/Notes/index.md).
32
+ Herald sends application email from templates and records what happened. The application supplies an email kind, such as an invitation, a language and its values. Herald fills the template, makes the HTML safe for email clients, embeds images and sends it over SMTP. Failed sends are queued and retried. Start with [the Herald documentation](./Documentation/Herald/index.md) to configure templates and delivery.
21
33
 
22
- **Herald** is the email part: an application asks it to send an email of a kind, such as an invitation, and it fills the template for that kind and language, makes the HTML safe for email clients, embeds the images, sends it over SMTP and records the outcome. Failed sends are queued and retried; see [Documentation](./Documentation/Herald/index.md).
34
+ ## Stage Manager
23
35
 
24
- **Stage Manager** is the Kubernetes operator. Unlike the other parts it is a service you install with the `cratis/showrunner-operator` Helm chart: a `Performance` runs an application, or a published Stage application, with its AuthProxy and its own Ante from a Cratis environment, reachable only through AuthProxy; see [Documentation](./Documentation/StageManager/index.md).
36
+ Stage Manager runs applications in Kubernetes. Install it as a service with the `cratis/showrunner-operator` Helm chart. A `Performance` runs an application with its AuthProxy and, when onboarding is configured, its own Ante from a Cratis environment. The application is reachable only through AuthProxy. A Performance can also run a published Stage application.
37
+
38
+ `Performance` is reconciled: the operator acts on it to run the application. The other resources have schemas only; nothing acts on them yet. Follow [the Stage Manager documentation](./Documentation/StageManager/index.md) to install the operator and run an application.
25
39
 
26
40
  ## Packages
27
41
 
42
+ Choose the backend packages for the part you are hosting, then add its TypeScript proxies or React components if the application needs a frontend. The contract packages contain the public events exchanged between hosts. Stage Manager ships separately as a container image and Helm chart, not a NuGet package.
43
+
28
44
  | Package | Registry | What it is |
29
45
  | --- | --- | --- |
46
+ | `Cratis.Showrunner.BoxOffice` | NuGet | Product-side licensing: receives the operator's decisions and enforces tenant entitlements |
30
47
  | `Cratis.Showrunner.BoxOffice.Catalog` | NuGet | Box Office's catalog — offers (seat plans, modules, compute packs), prices and the pricing arithmetic, published to products |
31
48
  | `Cratis.Showrunner.BoxOffice.Offering` | NuGet | Box Office for a product — declares what the product sells (modules, meters, seat licensing) and measures its compute per tenant and day |
32
49
  | `Cratis.Showrunner.BoxOffice.Product` | NuGet | Box Office for a managed product, in one call — creates the tenants the operator registers and reports them ready, answers whether a person may take a seat and whether a tenant is read-only, and reports who was active |
@@ -42,17 +59,21 @@ Usher covers reporting an issue, error capture, the conversation, time-limited s
42
59
  | `Cratis.Showrunner.Notes.Contracts` | NuGet | Notes' event contracts: the public events an application and the people building it exchange about product feedback |
43
60
  | `Cratis.Showrunner.Notes` | NuGet | Notes' backend for applications — commands to give, suggest and withdraw notes, the live list of a user's notes with their status, and the outbox that publishes them |
44
61
  | `Cratis.Showrunner.Notes.Collecting` | NuGet | Notes' receiving side for the builder of an application — reads the applications' notes into the tenant's namespace and answers them |
45
- | `@cratis/showrunner.marquee` | npm | The generated TypeScript proxies for Marquee's receiving commands and queries; no UI framework dependency |
46
- | `@cratis/showrunner.marquee.authoring` | npm | The generated TypeScript proxies for Marquee's authoring commands and query; no UI framework dependency |
62
+ | `@cratis/showrunner.boxoffice` | npm | Generated TypeScript proxies for the product's licensing frontend |
63
+ | `@cratis/showrunner.boxoffice.react` | npm | React components for entitlements, module filtering, trials, suspension, seats, usage and plans |
64
+ | `@cratis/showrunner.marquee` | npm | Generated TypeScript proxies for Marquee's receiving commands and queries |
65
+ | `@cratis/showrunner.marquee.authoring` | npm | Generated TypeScript proxies for Marquee's authoring commands and query |
47
66
  | `@cratis/showrunner.marquee.react` | npm | The Marquee drop-in React component: banners and dialogs for a product's announcements, built on `@cratis/arc.react` and `@cratis/components` |
48
- | `@cratis/showrunner.usher` | npm | The generated TypeScript proxies for Usher's commands and queries; no UI framework dependency |
67
+ | `@cratis/showrunner.usher` | npm | Generated TypeScript proxies for Usher's commands and queries |
49
68
  | `@cratis/showrunner.usher.react` | npm | React components for Usher, built on `@cratis/arc.react` and `@cratis/components` |
50
- | `@cratis/showrunner.notes` | npm | The generated TypeScript proxies for Notes' commands and queries; no UI framework dependency |
69
+ | `@cratis/showrunner.notes` | npm | Generated TypeScript proxies for Notes' commands and queries |
51
70
  | `@cratis/showrunner.notes.react` | npm | React components for Notes: the feedback button with its context drop-down, the feedback dialogs, the component picker and the user's own feedback, built on `@cratis/arc.react` and `@cratis/components` |
52
71
 
53
72
  ## Building
54
73
 
55
- Prerequisites: the .NET SDK from [`global.json`](./global.json) (10.0.400 or later) and Node.js 20 or later with Corepack enabled (`corepack enable`); Yarn itself is checked in under `.yarn/releases`.
74
+ To work on Showrunner, use the .NET SDK selected by [`global.json`](./global.json) and Node.js 20 or later with Corepack enabled (`corepack enable`). Yarn is checked in under `.yarn/releases`.
75
+
76
+ Run the commands below from the repository root. The full solution test command includes container-based integration specifications, so Docker must be running.
56
77
 
57
78
  ```shell
58
79
  # Backend: Debug builds compile the inline specs and regenerate the TypeScript proxies
@@ -70,18 +91,22 @@ yarn test
70
91
  yarn build
71
92
  ```
72
93
 
73
- Specifications live beside the code they specify — `for_*/when_*/` folders compiled into Debug builds only for .NET, and Vitest specs in the same layout for TypeScript.
94
+ Specifications live beside the code they specify: `for_*/when_*/` folders compiled into Debug builds only for .NET, and Vitest specs in the same layout for TypeScript. The Debug build regenerates TypeScript proxies from the backend; do not edit the generated proxies by hand. The pull request build checks that regeneration leaves the committed proxies unchanged.
74
95
 
75
- The end-to-end specifications in [`Integration`](./Integration) run Usher and a desk against a real Chronicle kernel in a container, so `dotnet test Showrunner.slnx` needs Docker. The end-to-end specifications for Notes in [`Integration.Notes`](./Integration.Notes) run an application and a collecting host the same way, sharing Usher's kernel container. Set `USHER_CHRONICLE_IMAGE` to run them against another kernel image, and `USHER_INTEGRATION_LOG` to a file path to keep the application's log.
96
+ For a focused integration run, [`Integration`](./Integration) runs Usher and a desk against Chronicle in a container. [`Integration.Notes`](./Integration.Notes) runs an application and a collecting host using the same container fixture code. For these two projects, set `USHER_CHRONICLE_IMAGE` to choose another kernel image and `USHER_INTEGRATION_LOG` to a file path to keep the hosts' logs.
97
+
98
+ `Integration.Herald/` also tests against Chronicle in a container; its image override is `HERALD_CHRONICLE_IMAGE`. `Integration.BoxOffice/` tests metering storage against MongoDB in Docker.
76
99
 
77
100
  ## Releasing
78
101
 
79
- Every pull request carries exactly one of the `major`, `minor`, `patch` or `no-release` labels. Merging a version-labelled pull request to `main` releases all four packages under one semantic version through [`cratis/release-action`](https://github.com/Cratis/release-action) — NuGet packages through NuGet trusted publishing and npm packages through npm trusted publishing with provenance. The packages are built and packed in jobs without publishing rights; separate jobs that run no build or install script hold the short-lived OIDC token and only push what was packed.
102
+ Every pull request carries exactly one of the `major`, `minor`, `patch` or `no-release` labels. Merging a version-labelled pull request to `main` releases the NuGet and npm packages under one semantic version through [`cratis/release-action`](https://github.com/Cratis/release-action). Use `no-release` to skip publishing. Stage Manager's container image and Helm chart are released with the same version.
103
+
104
+ NuGet and npm use trusted publishing through OpenID Connect (OIDC), with provenance for npm. Build and pack jobs have no publishing rights; separate publish jobs receive short-lived publishing credentials and push the packed artifacts. The npm publisher disables lifecycle scripts when publishing the tarballs.
80
105
 
81
106
  ## Part of the Cratis ecosystem
82
107
 
83
- Showrunner is a [Cratis](https://www.cratis.io) project, built on event sourcing with [Chronicle](https://github.com/Cratis/Chronicle) and CQRS with [Arc](https://github.com/Cratis/Arc), with frontends on [`@cratis/components`](https://github.com/Cratis/Components). Join the community on [Discord](https://discord.gg/kt4AMpV8WV).
108
+ Showrunner is a [Cratis](https://www.cratis.io) project. Its application libraries use [Chronicle](https://github.com/Cratis/Chronicle) to store changes as events. Those with commands and queries use [Arc](https://github.com/Cratis/Arc) to handle writes and reads separately, the pattern called CQRS. The React components build on [`@cratis/components`](https://github.com/Cratis/Components). Join the community on [Discord](https://discord.gg/kt4AMpV8WV).
84
109
 
85
110
  ## License
86
111
 
87
- Showrunner is licensed under the [MIT License](LICENSE) and free to use.
112
+ See the [MIT License](LICENSE) for the terms covering this repository.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@cratis/showrunner.boxoffice.react",
4
- "version": "1.15.0",
4
+ "version": "1.17.0",
5
5
  "description": "React components for Box Office — the Showrunner licensing part: entitlements, module gating, trial and suspension banners, seats, usage and plan pages, built on Cratis Arc and Cratis Components.",
6
6
  "keywords": [
7
7
  "cratis",
@@ -62,7 +62,7 @@
62
62
  "up": "yarn g:up"
63
63
  },
64
64
  "dependencies": {
65
- "@cratis/showrunner.boxoffice": "1.15.0"
65
+ "@cratis/showrunner.boxoffice": "1.17.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@cratis/arc": "22.155.0",