Aplicación web cliente-servidor para el registro de estudiantes en un programa de créditos universitario.
El sistema permite:
- Registrar, editar y eliminar estudiantes (CRUD completo)
- Inscribir estudiantes en materias con validaciones de negocio
- Consultar registros públicos de todos los estudiantes
- Ver compañeros de clase por materia (solo si está inscrito)
- Existen 10 materias, cada una equivale a 3 créditos
- 5 profesores dictan 2 materias cada uno
- Un estudiante solo puede inscribirse en máximo 3 materias
- Un estudiante no puede tener clases con el mismo profesor
- Cada estudiante puede ver los registros de otros estudiantes
- Cada estudiante puede ver solo el nombre de los compañeros en cada clase
| Capa | Tecnología |
|---|---|
| Frontend | Angular 19, Angular Material, TypeScript |
| Backend | ASP.NET Core (.NET 10), Minimal APIs |
| ORM | Entity Framework Core 9 |
| Base de datos | MySQL 8.0 (UTF-8, utf8mb4) |
| Contenedores | Docker, Docker Compose |
El backend implementa Arquitectura Hexagonal (Ports & Adapters):
backend/api/
├── Domain/ → Entidades y puertos (interfaces de repositorio)
├── Application/ → Use Cases, DTOs y Mappers
├── Infrastructure/ → EF Core, Repositorios, DI
└── Adapters/In/Api/ → Endpoints HTTP (Minimal APIs)
StudentsRegisters/
├── backend/ → API REST en ASP.NET Core
├── frontend/ → Cliente Angular 19
│ └── src/assets/i18n/ → Traducciones (es/en)
├── database/ → Script SQL de creación de BD
├── docker-compose.yml
└── README.md
- Internacionalización (i18n): español e inglés, con selector en la toolbar
- Temas: modo claro y oscuro con toggle, detecta preferencia del sistema
- Validaciones reactivas: formularios con ReactiveFormsModule y feedback visual
- Panel de inscripciones: muestra materias inscritas, advertencias de conflictos y slots disponibles
- Lazy loading: cada vista se carga bajo demanda
- Ruta 404: página amigable para rutas inexistentes
- ESLint + Prettier: linting y formato configurados
Levantar MySQL con Docker (charset UTF-8 configurado automáticamente):
docker compose up -dO usar una instancia MySQL local (ver database/init.sql para crear las tablas manualmente).
cd backend/api
dotnet runLa API estará disponible en http://localhost:5029.
También se puede ejecutar desde Visual Studio con el perfil HTTP o Container (Dockerfile).
cd frontend
npm install
ng serveLa aplicación estará disponible en http://localhost:4200.
- Aplicación web cliente-servidor (frontend Angular + backend ASP.NET Core)
- Script SQL para creación de base de datos (
database/init.sql)