feat: Initialize Strata KitchenSink application boilerplate

This sets up the foundational structure for a .NET Core 6 / React project,
demonstrating common architectural patterns, Docker integration, and key
Strata libraries for API, data access (EF Core), background jobs (Hangfire),
real-time communication (SignalR), and various frontend UI components.
This commit is contained in:
Thom Lamb
2026-06-23 10:58:15 -05:00
parent 1d2c6543dd
commit 0979371a57
125 changed files with 25811 additions and 218 deletions
@@ -0,0 +1,51 @@
// <auto-generated />
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using Strata.KitchenSink.Biz.DbContexts;
namespace Strata.KitchenSink.Biz.Migrations
{
[DbContext(typeof(KitchenSinkDbContext))]
[Migration("20211019191337_InitialCreate")]
partial class InitialCreate
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Relational:MaxIdentifierLength", 63)
.HasAnnotation("ProductVersion", "5.0.4")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
modelBuilder.Entity("Strata.KitchenSink.Biz.Departments.Department", b =>
{
b.Property<int>("DepartmentId")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("department_id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("DepartmentCode")
.HasColumnType("text")
.HasColumnName("department_code");
b.Property<int>("DepartmentType")
.HasColumnType("integer")
.HasColumnName("department_type");
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.HasKey("DepartmentId")
.HasName("pk_departments");
b.ToTable("departments");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,32 @@
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace Strata.KitchenSink.Biz.Migrations
{
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "departments",
columns: table => new
{
department_id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
department_code = table.Column<string>(type: "text", nullable: true),
description = table.Column<string>(type: "text", nullable: true),
department_type = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("pk_departments", x => x.department_id);
});
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "departments");
}
}
}
@@ -0,0 +1,49 @@
// <auto-generated />
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using Strata.KitchenSink.Biz.DbContexts;
namespace Strata.KitchenSink.Biz.Migrations
{
[DbContext(typeof(KitchenSinkDbContext))]
partial class KitchenSinkDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("Relational:MaxIdentifierLength", 63)
.HasAnnotation("ProductVersion", "5.0.4")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
modelBuilder.Entity("Strata.KitchenSink.Biz.Departments.Department", b =>
{
b.Property<int>("DepartmentId")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("department_id")
.HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn);
b.Property<string>("DepartmentCode")
.HasColumnType("text")
.HasColumnName("department_code");
b.Property<int>("DepartmentType")
.HasColumnType("integer")
.HasColumnName("department_type");
b.Property<string>("Description")
.HasColumnType("text")
.HasColumnName("description");
b.HasKey("DepartmentId")
.HasName("pk_departments");
b.ToTable("departments");
});
#pragma warning restore 612, 618
}
}
}