Files
Joseph Doherty 26ff8d9b4f Initial commit: JDE Scoping Tool migration project
Set up repository with legacy .NET Framework 4.8 source (OLD/),
new .NET 10 Blazor solution (NEW/), OpenSpec specifications,
documentation, and project configuration.
2026-01-02 07:43:29 -05:00

3.0 KiB

Solution Structure

The solution uses a minimal project structure with four projects in a single deployable.

Project Layout

NEW/
├── JdeScoping.sln
├── src/
│   ├── JdeScoping.Host/           # ASP.NET Core host + Blazor server
│   │   ├── Program.cs             # Entry point, service configuration
│   │   ├── Controllers/           # API endpoints
│   │   ├── Hubs/                  # SignalR hubs
│   │   ├── BackgroundServices/    # Search processor, data sync
│   │   └── wwwroot/               # Blazor WASM published output
│   │
│   ├── JdeScoping.Client/         # Blazor WebAssembly UI
│   │   ├── Pages/                 # Razor pages
│   │   ├── Components/            # Reusable Radzen components
│   │   ├── Services/              # HTTP + SignalR clients
│   │   └── wwwroot/               # Static assets
│   │
│   ├── JdeScoping.Core/           # Shared business logic
│   │   ├── Models/                # Domain models (WorkOrder, Search, etc.)
│   │   ├── Interfaces/            # Repository/service contracts
│   │   ├── Repositories/          # Dapper data access
│   │   └── Services/              # Business logic
│   │
│   └── JdeScoping.Database/       # Database schema migrations
│       ├── Scripts/               # Versioned SQL scripts
│       │   ├── 001_CreateSearchTable.sql
│       │   ├── 002_CreateDataUpdateTable.sql
│       │   └── ...
│       └── DatabaseMigrator.cs    # DbUp runner
│
└── tests/
    └── JdeScoping.Tests/          # xUnit + Shouldly tests
        ├── Unit/
        └── Integration/

Project Responsibilities

JdeScoping.Host

The deployable Windows Service. Hosts the Blazor WASM client, REST API, SignalR hub, and background services. References JdeScoping.Core for business logic.

JdeScoping.Client

The Blazor WebAssembly UI. Compiled and published into Host's wwwroot folder. Uses Radzen Blazor for components. No direct database access - communicates via HTTP and SignalR.

JdeScoping.Core

Business logic and data access. Contains domain models, repository interfaces and implementations, and services. No ASP.NET dependencies - fully testable in isolation.

JdeScoping.Database

Database schema management using DbUp. Contains versioned SQL scripts that are embedded as resources and executed in order on application startup. Scripts are idempotent - DbUp tracks which scripts have run in a SchemaVersions table.

JdeScoping.Tests

Unit and integration tests using xUnit, Shouldly for assertions, and NSubstitute for mocking.