Skip to content

Conversation

@thompcd
Copy link
Owner

@thompcd thompcd commented Jan 3, 2026

This commit implements steps 1-7 of the BenchLibrary roadmap:

Step 1 - Monorepo Structure:

  • Created BenchLibrary.sln solution file
  • Added .editorconfig with C# coding standards
  • Created src/, tests/, samples/, .github/workflows/ directories

Step 2 - Central Package Management:

  • Created Directory.Build.props with .NET 8, C# 12, nullable types
  • Created Directory.Packages.props with centralized NuGet versions

Step 3 - BenchLibrary.Core:

  • IInstrument interface for test instruments
  • ITestRepository interface for data access
  • Measurement, TestResult, DeviceUnderTest models
  • TestStatus, InstrumentType, MeasurementUnit enums
  • Full XML documentation on all public APIs

Step 4 - BenchLibrary.SixSigma:

  • StatisticsCalculator for basic stats (mean, stddev, range)
  • CapabilityCalculator for Cp, Cpk, Pp, Ppk calculations
  • ControlChartCalculator for X-bar, R, I-MR charts
  • ParetoCalculator for 80/20 analysis
  • SigmaLevelCalculator for DPMO and sigma level
  • Supporting models with capability ratings

Step 5 - Unit Tests:

  • BenchLibrary.Core.Tests with model tests
  • BenchLibrary.SixSigma.Tests with calculation tests
  • Uses xUnit, FluentAssertions, Moq

Step 6 - BenchLibrary.Data:

  • BenchLibraryDbContext with EF Core
  • TestRepository implementation
  • DeviceRepository implementation
  • SQLite and PostgreSQL support
  • DI extension methods

Step 7 - BenchLibrary.Web:

  • Blazor Server application with MudBlazor
  • Home page with feature overview
  • SPC Dashboard with X-bar/R chart simulation
  • Capability Analysis page with Cpk visualization
  • Pareto Analysis page with 80/20 breakdown
  • Sigma Level Calculator page
  • Dark mode support
  • Responsive layout

claude added 7 commits January 3, 2026 17:31
This commit implements steps 1-7 of the BenchLibrary roadmap:

Step 1 - Monorepo Structure:
- Created BenchLibrary.sln solution file
- Added .editorconfig with C# coding standards
- Created src/, tests/, samples/, .github/workflows/ directories

Step 2 - Central Package Management:
- Created Directory.Build.props with .NET 8, C# 12, nullable types
- Created Directory.Packages.props with centralized NuGet versions

Step 3 - BenchLibrary.Core:
- IInstrument interface for test instruments
- ITestRepository interface for data access
- Measurement, TestResult, DeviceUnderTest models
- TestStatus, InstrumentType, MeasurementUnit enums
- Full XML documentation on all public APIs

Step 4 - BenchLibrary.SixSigma:
- StatisticsCalculator for basic stats (mean, stddev, range)
- CapabilityCalculator for Cp, Cpk, Pp, Ppk calculations
- ControlChartCalculator for X-bar, R, I-MR charts
- ParetoCalculator for 80/20 analysis
- SigmaLevelCalculator for DPMO and sigma level
- Supporting models with capability ratings

Step 5 - Unit Tests:
- BenchLibrary.Core.Tests with model tests
- BenchLibrary.SixSigma.Tests with calculation tests
- Uses xUnit, FluentAssertions, Moq

Step 6 - BenchLibrary.Data:
- BenchLibraryDbContext with EF Core
- TestRepository implementation
- DeviceRepository implementation
- SQLite and PostgreSQL support
- DI extension methods

Step 7 - BenchLibrary.Web:
- Blazor Server application with MudBlazor
- Home page with feature overview
- SPC Dashboard with X-bar/R chart simulation
- Capability Analysis page with Cpk visualization
- Pareto Analysis page with 80/20 breakdown
- Sigma Level Calculator page
- Dark mode support
- Responsive layout
Workflows:
- ci.yml: Build, test, and code coverage on PRs and pushes
  - Runs on ubuntu-latest with .NET 8
  - Generates code coverage reports
  - Posts coverage summary to PRs
  - Checks code formatting
  - Builds with warnings as errors in Release

- preview-release.yml: Preview NuGet packages on PRs
  - Generates version: 0.1.0-preview.{PR#}.{run#}
  - Builds and packs Core, SixSigma, and Data libraries
  - Publishes to GitHub Packages
  - Comments on PR with package installation instructions
  - Uploads packages as artifacts

- release.yml: Release workflow for tagged versions
  - Triggered by v* tags
  - Publishes to GitHub Packages
  - Optional NuGet.org publishing
  - Creates GitHub Release with notes

Configuration:
- Directory.Build.props: Added versioning, Source Link, deterministic builds
- Directory.Packages.props: Added Microsoft.SourceLink.GitHub
- dependabot.yml: Weekly dependency updates for NuGet and Actions
- Dockerfile: Multi-stage build for .NET 8 Blazor Server app
  - Uses SDK image for build, aspnet runtime for final image
  - Runs as non-root user for security
  - Exposes port 8080 for Railway

- railway.toml: Railway platform configuration
  - Uses Dockerfile builder
  - Configures health check endpoint

- .dockerignore: Excludes unnecessary files from Docker build

- .mcp.json: Railway MCP server configuration for Claude Code

- Program.cs updates:
  - Supports PORT environment variable (Railway)
  - Supports DATABASE_URL for PostgreSQL (Railway addon)
  - Health check endpoint at /health
  - Disables HTTPS redirect behind Railway proxy
- Remove Docker HEALTHCHECK that used unavailable curl command
- Fix file ownership in Docker image with --chown flag
- Create writable data directory for SQLite database
- Update SQLite connection string to use data/ directory
- Add data/ and *.db files to .gitignore
- Add T="bool" type parameter to MudSwitch component
- Change PaletteLight to Palette in MudTheme configuration
@thompcd thompcd merged commit 56f3bcf into main Jan 3, 2026
2 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants