Ryvendeil.Deck.Framework
0.1.0-alpha.1
dotnet add package Ryvendeil.Deck.Framework --version 0.1.0-alpha.1
NuGet\Install-Package Ryvendeil.Deck.Framework -Version 0.1.0-alpha.1
<PackageReference Include="Ryvendeil.Deck.Framework" Version="0.1.0-alpha.1" />
<PackageVersion Include="Ryvendeil.Deck.Framework" Version="0.1.0-alpha.1" />
<PackageReference Include="Ryvendeil.Deck.Framework" />
paket add Ryvendeil.Deck.Framework --version 0.1.0-alpha.1
#r "nuget: Ryvendeil.Deck.Framework, 0.1.0-alpha.1"
#:package Ryvendeil.Deck.Framework@0.1.0-alpha.1
#addin nuget:?package=Ryvendeil.Deck.Framework&version=0.1.0-alpha.1&prerelease
#tool nuget:?package=Ryvendeil.Deck.Framework&version=0.1.0-alpha.1&prerelease
Deck Framework
Deck Framework is the C# authoring library for deterministic Deck bundles. A resource is an ordinary self-describing class. Constructor injection composes resources, named endpoints express communication, and WaitFor separately expresses deployment ordering. There is deliberately no Actor type and no Aspire-style global chain of resource-builder calls.
public interface IDatabase
{
Endpoint Postgres { get; }
Resource Resource { get; }
}
public sealed class Api : Resource
{
private readonly IDatabase _database;
private readonly Endpoint _http;
public Api(IDatabase database) : base("api")
{
_database = database;
_http = DeclareEndpoint("http");
}
public override void Describe(ResourceDefinition resource)
{
resource.Require(_database.Postgres); // communication, not readiness
resource.WaitFor(_database.Resource); // explicit readiness when required
resource.Add(Kubernetes.Deployment("api", "demo", 1,
new Container("api", "registry.example/api@sha256:...", [8080])));
resource.Add(Kubernetes.Service("api", "demo", "api", ("http", 80, 8080)));
resource.Expose(_http, "demo", "api", "http", "http");
}
}
DeckApplicationBuilder uses Microsoft DI to instantiate only the roots selected by a profile and their constructor dependency closure. Interface-backed resources can be substituted with mocks in a profile. Mode is not a resource/profile property: BundleCompiler.CompileAsync(model, BundleMode.Run) applies it after the mode-neutral model is evaluated.
Deployment, StatefulSet, Job and Service helpers cover the first common shapes. KubernetesObject is the universal primitive/CRD escape hatch, so the Framework need not duplicate Kubernetes' complete and evolving type surface.
HelmChart accepts a local chart directory or archive. HelmCliRenderer invokes helm template at authoring time with an explicit Kubernetes version, includes CRDs, excludes tests, rejects hooks/keep policies and YAML aliases, expands Kubernetes List documents, and returns ordinary KubernetesObject values. Only those objects enter CBOR; DeckCD and the appliance never receive chart templates, values or a Helm dependency. Release tooling is responsible for supplying a pinned Helm executable.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.11)
- System.Formats.Cbor (>= 10.0.11)
- YamlDotNet (>= 18.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-alpha.1 | 72 | 8/28/2026 |
Pre-alpha release. Interfaces and deployment contracts remain subject to change.