Ryvendeil.Deck.Framework 0.1.0-alpha.1

This is a prerelease version of Ryvendeil.Deck.Framework.
dotnet add package Ryvendeil.Deck.Framework --version 0.1.0-alpha.1
                    
NuGet\Install-Package Ryvendeil.Deck.Framework -Version 0.1.0-alpha.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Ryvendeil.Deck.Framework" Version="0.1.0-alpha.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Ryvendeil.Deck.Framework" Version="0.1.0-alpha.1" />
                    
Directory.Packages.props
<PackageReference Include="Ryvendeil.Deck.Framework" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Ryvendeil.Deck.Framework --version 0.1.0-alpha.1
                    
#r "nuget: Ryvendeil.Deck.Framework, 0.1.0-alpha.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Ryvendeil.Deck.Framework@0.1.0-alpha.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Ryvendeil.Deck.Framework&version=0.1.0-alpha.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Ryvendeil.Deck.Framework&version=0.1.0-alpha.1&prerelease
                    
Install as a Cake Tool

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.