4.2 KiB
CLAUDE.md - DeepDrftWeb
This file provides guidance to Claude Code (claude.ai/code) when working with the DeepDrftWeb project.
Project Overview
DeepDrftWeb is the main web application using Blazor Server/WebAssembly hybrid architecture with MudBlazor UI framework. It serves as the front-end interface for the DeepDrft music management system.
Architecture
Technology Stack
- Blazor Hybrid: Interactive Server + WebAssembly components
- MudBlazor: Material Design UI framework
- Entity Framework Core: SQLite database access
- ASP.NET Core 9.0: Web framework
Project Structure
DeepDrftWeb/
├── Components/ # Blazor components (.razor files)
│ ├── App.razor # Root application component
│ ├── Pages/ # Page components
│ └── _Imports.razor # Global using statements
├── Controllers/ # MVC API controllers
├── Data/ # Database layer
│ ├── DeepDrftContext.cs # EF DbContext
│ ├── Configurations/ # EF configurations
│ ├── Migrations/ # EF migrations
│ └── Repositories/ # Data access layer
├── Services/ # Business logic layer
└── Program.cs # Application entry point
Key Patterns
Service Architecture
// Three-layer pattern: Controller → Service → Repository
TrackController → TrackService → TrackRepository → DeepDrftContext
Result Pattern
All service methods return ResultContainer<T> or Result for consistent error handling:
public async Task<ResultContainer<TrackEntity?>> GetById(long id)
{
try
{
var track = await _repository.GetById(id);
return ResultContainer<TrackEntity?>.CreatePassResult(track);
}
catch (Exception e)
{
return ResultContainer<TrackEntity?>.CreateFailResult(e.Message);
}
}
Paging Support
Uses PagingParameters<T> and PagedResult<T> from DeepDrftModels for consistent pagination:
var parameters = new PagingParameters<TrackEntity>()
{
Page = pageNumber,
PageSize = pageSize,
OrderBy = entity => entity.TrackName,
IsDescending = sortDescending
};
Development Commands
Running the Application
# Run web application
dotnet run --project DeepDrftWeb
# Watch for changes during development
dotnet watch run --project DeepDrftWeb
Entity Framework
# Add migration
dotnet ef migrations add MigrationName --project DeepDrftWeb
# Update database
dotnet ef database update --project DeepDrftWeb
# Drop database
dotnet ef database drop --project DeepDrftWeb
Building
# Build project
dotnet build DeepDrftWeb
# Clean build
dotnet clean DeepDrftWeb && dotnet build DeepDrftWeb
Configuration
Database Connection
- Connection String:
appsettings.json→ConnectionStrings.DefaultConnection - Database Location:
../Database/deepdrft.db(SQLite) - Context:
DeepDrftContextwithTrackEntityDbSet
Service Registration
Key services registered in Startup.ConfigureDomainServices():
DeepDrftContext(EF DbContext)TrackRepository(Scoped)TrackService(Scoped)
HttpClient Setup
Configured for API communication with DeepDrftContent:
builder.Services.AddHttpClient("DeepDrft.API", client =>
client.BaseAddress = new Uri(Startup.GetKestrelUrl(builder)));
Important Notes
Blazor Hybrid Architecture
- Server-side rendering with interactive components
- WebAssembly components from
DeepDrftWeb.Client - Shared assemblies for interactive modes
MudBlazor Integration
- UI framework providing Material Design components
- Registered via
builder.Services.AddMudServices()
Repository Pattern
- Clean separation of concerns
- Async operations throughout
- CRUD operations for TrackEntity
URL Configuration
Dynamic URL resolution via Startup.GetKestrelUrl() supporting:
ASPNETCORE_URLSenvironment variableKestrel:Endpointsconfiguration- Development defaults (https://localhost:5001)
When working with this project, focus on maintaining the established patterns for service layer interaction, result handling, and Blazor component structure.