--- description: "Create the Duempelkas .NET 10 solution skeleton with Photino.Blazor desktop host, Razor class library, domain, infrastructure, and test projects" agent: "agent" --- # Step 1: Solution Skeleton Create the complete .NET 10 solution structure for the Duempelkas cashbook/personal-finance application. ## Projects | Project | SDK | Output | NuGet Packages | Project References | |---------|-----|--------|----------------|--------------------| | `src/Duempelkas.Desktop` | Microsoft.NET.Sdk | Exe | Photino.Blazor | App, Infrastructure | | `src/Duempelkas.App` | Microsoft.NET.Sdk.Razor | Library | — | Domain | | `src/Duempelkas.Domain` | Microsoft.NET.Sdk | Library | — | — | | `src/Duempelkas.Infrastructure` | Microsoft.NET.Sdk | Library | Microsoft.EntityFrameworkCore.Sqlite, Microsoft.EntityFrameworkCore.Design, QuestPDF | Domain, App | | `tests/Duempelkas.Tests` | Microsoft.NET.Sdk | Library | xunit, xunit.runner.visualstudio, Microsoft.NET.Test.Sdk, FluentAssertions | Domain, Infrastructure, App | All projects target `net10.0`, enable nullable reference types, and use implicit usings. ## Key Files to Create - `src/Duempelkas.Desktop/Program.cs` — Photino.Blazor startup: register DI services (DbContext, application services), register root Blazor component ``, configure window title and size, handle unhandled exceptions. - `src/Duempelkas.Desktop/wwwroot/index.html` — HTML host page with Bootstrap 5 CDN, app CSS link, and `` root element. - `src/Duempelkas.App/Components/App.razor` — Root Blazor component with Router. - `src/Duempelkas.App/Components/Routes.razor` — Router pointing to `Duempelkas.App.Pages` assembly. - `src/Duempelkas.App/Components/Layout/MainLayout.razor` — Shell layout with sidebar/nav and main content area. - `src/Duempelkas.App/_Imports.razor` — Global usings for Microsoft.AspNetCore.Components, Duempelkas namespaces. ## Conventions - File-scoped namespaces everywhere. - Root namespace matches folder structure: `Duempelkas.Desktop`, `Duempelkas.App`, etc. - Place the `.sln` file at the repository root.