Templarios es una aplicación web full stack empresarial construida con Angular 21 y Spring Boot 3, diseñada para gestionar usuarios y registros operativos con control de acceso basado en roles.
El sistema nació como ejercicio de arquitectura moderna: desde cero se diseñó e implementó una solución escalable, segura y lista para conectarse a una base de datos real en el futuro.
Se implementó una arquitectura hexagonal por capas con separación clara de responsabilidades:
| Capa | Contenido |
|---|---|
domain |
Entidades (AppUser, Record, Role) e interfaces de repositorio |
application |
DTOs, servicios (AuthService, RecordService, UserService) |
infrastructure |
Repositorios en memoria, seguridad JWT, controladores REST, CORS |
shared |
Manejador global de excepciones (GlobalExceptionHandler) |
Endpoints principales:
| Método | Ruta | Acceso |
|---|---|---|
POST |
/api/auth/login |
Público |
GET |
/api/admin/users |
Solo ADMIN |
POST |
/api/admin/users |
Solo ADMIN |
GET |
/api/records |
ADMIN + OPERARIO |
POST |
/api/records |
ADMIN + OPERARIO |
PUT |
/api/records/{id} |
ADMIN + propietario |
DELETE |
/api/records/{id} |
Solo ADMIN |
Se implementaron todas las características modernas de Angular:
- Standalone Components — sin NgModules
- Signals (
signal,computed,input) — sin@Input()legacy - Zoneless (
provideZonelessChangeDetection) — sin zone.js - Lazy Loading — cada ruta carga su chunk independiente
- Reactive Forms — login, registro de usuarios, CRUD de registros
- Guards funcionales —
authGuard,adminGuard,operatorGuard,guestGuard - Interceptor funcional — inyecta
Bearer tokeny captura errores 401
- Escaneo de CVEs con OWASP Dependency Check
- Actualización de
spring-boot-starter-parentde 3.3.4 → 3.3.13 (corrige CVE-2024-38821, CVE-2024-38816, CVE-2024-38820) - Contraseñas cifradas con BCrypt
- Tokens JWT firmados (HS256, 1 hora de expiración)
- JDK 25 instalado
- Maven 3.9+ instalado
- Node.js 20+ y npm instalados
$env:JAVA_HOME = "C:\Users\nlozanoc\.jdk\jdk-25"
$env:PATH = "$env:JAVA_HOME\bin;" + $env:PATH- Busca "Variables de entorno" en el menú Inicio de Windows
- En Variables del sistema → clic en Nueva:
- Nombre:
JAVA_HOME - Valor:
C:\Users\nlozanoc\.jdk\jdk-25
- Nombre:
- En la variable
Path→ Editar → Nueva → agrega:%JAVA_HOME%\bin - Haz clic en Aceptar en todas las ventanas
- Abre una terminal nueva para que tome efecto
Abre una terminal y ejecuta:
cd "ruta\al\proyecto\templarios\backend"
mvn spring-boot:runEspera hasta ver en consola:
Started TemplariosBackendApplication in X.XXX seconds
✅ Backend disponible en: http://localhost:8080
Abre otra terminal y ejecuta:
cd "ruta\al\proyecto\templarios\frontend"
npx ng serve✅ Frontend disponible en: http://localhost:4200
⚠️ El backend debe estar corriendo antes de abrir la app en el navegador.
| Usuario | Contraseña | Rol | Acceso |
|---|---|---|---|
admin |
Admin123* |
Administrador | Dashboard completo, gestión de usuarios y registros |
operario1 |
Oper123* |
Operario | Solo sus propios registros |
operario2 |
Oper123* |
Operario | Solo sus propios registros |
templarios/
├── backend/ ← Spring Boot 3 · Java 25
│ ├── src/main/java/
│ │ └── com/templarios/backend/
│ │ ├── application/ (DTOs, Services)
│ │ ├── domain/ (Entidades, Repositorios)
│ │ ├── infrastructure/ (Web, Security, Config)
│ │ └── shared/ (Excepciones globales)
│ └── pom.xml
│
└── frontend/ ← Angular 21 · Zoneless · Signals
└── src/app/
├── auth/ (Login)
├── admin/ (Dashboard admin, gestión usuarios)
├── operator/ (Dashboard operario)
├── shared/ (Tabla de registros reutilizable)
└── core/ (Guards, Interceptors, State, Services)
- Reemplazar repositorios en memoria →
JpaRepository(PostgreSQL) - Implementar refresh tokens
- Añadir paginación en tablas
- Tests de integración con
@SpringBootTesty Cypress E2E - Dockerizar con
docker-compose(backend + frontend + DB)
Construido con disciplina de arquitecto, espíritu de cruzado.
⚔ Templarios ⚔