Solution Structure
The Sistema de Seguimiento de Solicitudes solution consists of three main projects:Frontend Project Structure
Sistema de Seguimiento de Solicitudes/
Key Frontend Files
Program.cs
Purpose: Application entry point and service configuration Contains:- WebAssembly host builder setup
- Service registrations (HttpClient, services, auth)
- Component libraries configuration (MudBlazor, Radzen, SweetAlert2)
App.razor
Purpose: Root component that defines routing and layout Contains:- Router configuration
- Authentication wrapper
- Default layout assignments
_Imports.razor
Purpose: Global using directives for all Razor components Contains:- Common namespace imports
- Component library imports
Backend Project Structure
SolicitudesAPI/
Key Backend Files
Program.cs
Purpose: API configuration and middleware pipeline Contains:- Service registrations (DbContext, JWT, CORS)
- Authentication/authorization setup
- Middleware pipeline configuration
- QuestPDF license activation
SistemaSolicitudesContext.cs
Purpose: Entity Framework Core database context Contains:- DbSet properties for each entity
- Entity configurations (Fluent API)
- Database connection handling
Controllers/
Purpose: API endpoint definitions Pattern: RESTful API controllers Responsibilities:- Request handling
- Input validation
- Business logic orchestration
- Response formatting
Shared Project Structure
SolicitudesShared/
Purpose of Shared Project
Why Shared?- Ensures type consistency between frontend and backend
- Avoids code duplication
- Single source of truth for data contracts
- Enables compile-time checking
- DTOs (Data Transfer Objects)
- Request/response models
- Validation attributes
- Enums and constants
- Common utilities
File Naming Conventions
Razor Components (.razor)
- PascalCase for file names
- Spaces allowed in folder names (Spanish naming)
- Example:
Detalles de Expediente.razor
Component Styles (.razor.css)
- Same name as component with
.cssextension - Scoped to the component automatically
- Example:
Detalles de Expediente.razor.css
C# Classes (.cs)
- PascalCase for file names
- One class per file (typically)
- Example:
ExpedienteService.cs
Interfaces (I*.cs)
- Prefix with ‘I’
- Example:
IExpedienteService.cs
Code Organization Patterns
Frontend Service Layer
Pattern:Backend Controller Pattern
Pattern:DTO Pattern
Shared DTOs:- Backend: Send data to frontend
- Frontend: Receive and display data
- Validation: Shared validation attributes
Configuration Files
Frontend Configuration
wwwroot/appsettings.json (if present)
Purpose: Frontend configuration Contains:- Feature flags
- API endpoints
- Client-side settings
Backend Configuration
appsettings.json
Purpose: Production configuration Contains:- Connection strings
- JWT settings
- Logging configuration
- Application settings
appsettings.Development.json
Purpose: Development overrides Contains:- Development-specific settings
- Verbose logging
- Local service endpoints
Static Assets (wwwroot/)
Purpose
- Static files served directly to browser
- Images, CSS, JavaScript, fonts
- PWA assets (manifest, service worker)
Organization
Build Output
Frontend Build
Location:bin/Debug/net9.0/ or bin/Release/net9.0/
Published: bin/Release/net9.0/publish/wwwroot/
Contents:
- WebAssembly files (.wasm)
- .NET assemblies (.dll)
- Static assets
- Service worker
Backend Build
Location:bin/Debug/net9.0/ or bin/Release/net9.0/
Published: bin/Release/net9.0/publish/
Contents:
- Compiled assemblies
- Configuration files
- Dependencies
Dependencies Flow
- Frontend references Shared
- Backend references Shared
- Shared has no dependencies on Frontend or Backend
Project References
Frontend .csproj
Backend .csproj
Next Steps
- Development Setup - Set up your environment
- Contributing Guide - How to contribute
- Architecture Overview - Understand the design