@startuml architecture !theme plain skinparam backgroundColor #FFFFFF skinparam defaultFontName Arial skinparam packageStyle rectangle title The Biergarten App - Layered Architecture package "API Layer" #E3F2FD { [API.Core\nASP.NET Core Web API] as API note right of API - Controllers (Auth, User) - Swagger/OpenAPI - Middleware - Health Checks end note } package "Service Layer" #F3E5F5 { [Service.Auth] as AuthSvc [Service.UserManagement] as UserSvc note right of AuthSvc - Business Logic - Validation - Orchestration end note } package "Infrastructure Layer" #FFF3E0 { [Infrastructure.Repository] as Repo [Infrastructure.Jwt] as JWT [Infrastructure.PasswordHashing] as PwdHash [Infrastructure.Email] as Email } package "Domain Layer" #E8F5E9 { [Domain.Entities] as Domain note right of Domain - UserAccount - UserCredential - UserVerification end note } database "SQL Server" { [Stored Procedures] as SP [Tables] as Tables } ' Relationships API --> AuthSvc API --> UserSvc AuthSvc --> Repo AuthSvc --> JWT AuthSvc --> PwdHash AuthSvc --> Email UserSvc --> Repo Repo --> SP Repo --> Domain SP --> Tables AuthSvc --> Domain UserSvc --> Domain ' Notes note left of Repo SQL-first approach All queries via stored procedures end note @enduml