Set up repository with legacy .NET Framework 4.8 source (OLD/), new .NET 10 Blazor solution (NEW/), OpenSpec specifications, documentation, and project configuration.
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.