Entregables - Prueba Técnica Senior .NET/Angular
Proyecto: Sistema de Registro de Estudiantes
Empresa: Inter Rapidísimo
Cargo: Desarrollador Master .NET/Angular
Resumen Ejecutivo
Sistema web completo para gestión de inscripciones de estudiantes con las siguientes características:
- Backend: .NET 10, GraphQL (HotChocolate), Clean Architecture
- Frontend: Angular 21, Standalone Components, Signals
- Base de Datos: SQL Server con EF Core
- Seguridad: OWASP compliant, rate limiting, query complexity
- Testing: 145 tests automatizados
- Despliegue: Docker + Kubernetes (k3s)
Estructura del Proyecto
/
├── src/
│ ├── backend/ # .NET 10 API GraphQL
│ │ ├── Domain/ # Entidades, Value Objects, Ports
│ │ ├── Application/ # Commands, Queries, DTOs
│ │ ├── Adapters/ # GraphQL API, Persistence
│ │ └── Host/ # Entry point, DI
│ └── frontend/ # Angular 21 SPA
├── tests/ # Tests automatizados
├── docs/ # Documentación
└── deploy/ # Docker + k3s
Funcionalidades Implementadas
Requisitos Funcionales
| # |
Requisito |
Estado |
| 1 |
CRUD completo de estudiantes |
✅ |
| 2 |
Inscripción en materias (max 3) |
✅ |
| 3 |
Visualización de compañeros de clase |
✅ |
| 4 |
Restricción de profesor único |
✅ |
| 5 |
10 materias, 5 profesores |
✅ |
| 6 |
3 créditos por materia |
✅ |
| 7 |
Validación de inscripciones |
✅ |
| 8 |
UI responsiva |
✅ |
| 9 |
Manejo de errores |
✅ |
Reglas de Negocio
- ✅ Máximo 3 materias por estudiante (9 créditos)
- ✅ No repetir profesor en inscripciones
- ✅ Validación en Domain Layer (pura, testeable)
- ✅ Mensajes de error descriptivos
Arquitectura
Clean Architecture
Host → Adapters → Application → Domain
- Domain: Entidades puras, sin dependencias
- Application: Casos de uso con CQRS
- Adapters: GraphQL API + EF Core
- Host: Composición y DI
Patrones Implementados
| Patrón |
Uso |
| CQRS |
Separación Commands/Queries |
| Repository |
Abstracción de persistencia |
| Ports & Adapters |
Inversión de dependencias |
| DataLoader |
Evitar N+1 en GraphQL |
| Specification |
Consultas reutilizables |
Testing
Resumen de Tests
| Tipo |
Cantidad |
Cobertura |
| Domain Tests |
30 |
Entidades, Value Objects, Services |
| Application Tests |
66 |
Commands, Queries, Validators |
| Integration Tests |
5 |
GraphQL API completa |
| Angular Unit Tests |
24 |
Services, Pipes |
| E2E Tests (Playwright) |
20 |
Flujos de usuario |
| Total |
145 |
|
Ejecutar Tests
# Backend
dotnet test
# Frontend
cd src/frontend
ng test --watch=false
# E2E
npx playwright test
Seguridad (OWASP)
| Control |
Implementación |
| Input Validation |
FluentValidation + Regex |
| SQL Injection |
EF Core parametrizado |
| XSS Prevention |
Sanitización en validators |
| Security Headers |
CSP, HSTS, X-Frame-Options |
| Rate Limiting |
100 req/min (fixed window) |
| Query Complexity |
Depth 5, Cost 100 |
| Logging |
Serilog (sin datos sensibles) |
Documentación
| Documento |
Ubicación |
| README principal |
/README.md |
| Arquitectura Backend |
/docs/entregables/02-diseno/arquitectura/ |
| Modelo de Dominio |
/docs/entregables/02-diseno/modelo-dominio/ |
| Diseño BD |
/docs/entregables/02-diseno/base-datos/ |
| Esquema GraphQL |
/docs/entregables/02-diseno/esquema-graphql/ |
| ADRs |
/docs/architecture/decisions/ |
| OWASP Checklist |
/docs/OWASP_CHECKLIST.md |
| Manual Despliegue |
/docs/DEPLOYMENT.md |
Despliegue
Docker
cd deploy/docker
docker-compose up -d --build
Kubernetes (k3s)
cd deploy/k3s
./deploy.sh all
URLs
Competencias Demostradas
Arquitectura y Diseño
- ✅ Clean Architecture con separación de capas
- ✅ Principios SOLID aplicados
- ✅ Domain-Driven Design (DDD lite)
- ✅ CQRS para separación de concerns
Backend (.NET)
- ✅ .NET 10 con C# 13
- ✅ GraphQL con HotChocolate
- ✅ EF Core con Fluent API
- ✅ FluentValidation
- ✅ DataLoaders para N+1
Frontend (Angular)
- ✅ Angular 21 con Standalone Components
- ✅ Signals para estado reactivo
- ✅ Apollo Client para GraphQL
- ✅ Angular Material UI
- ✅ Lazy Loading
DevOps
- ✅ Docker multi-stage builds
- ✅ Kubernetes manifests
- ✅ Health checks
- ✅ Horizontal Pod Autoscaler
Testing
- ✅ Unit tests con alta cobertura
- ✅ Integration tests
- ✅ E2E tests con Playwright
- ✅ Mocking de dependencias
Seguridad
- ✅ OWASP Top 10 compliance
- ✅ Input validation
- ✅ Rate limiting
- ✅ Security headers
Cómo Ejecutar
Desarrollo Local
# Backend
cd src/backend/Host
dotnet run
# Frontend
cd src/frontend
npm install
ng serve
Con Docker
cd deploy/docker
docker-compose up -d
Tests
# Todos los tests backend
dotnet test
# Tests frontend
cd src/frontend && ng test
# E2E
cd src/frontend && npx playwright test
Decisiones Técnicas
Ver ADRs completos en /docs/architecture/decisions/:
- ADR-001: Clean Architecture - Testabilidad y mantenibilidad
- ADR-002: GraphQL vs REST - Flexibilidad en queries
- ADR-003: Signals vs RxJS - Simplicidad en estado local
- ADR-004: Validación 3 capas - Defensa en profundidad
Desarrollado como prueba técnica para Inter Rapidísimo