feat: Sistema de autenticación frontend (Login + Register + Dashboard) #3

Merged
dmolinari merged 4 commits from feat/autenticacion-frontend into main 2026-04-01 17:38:49 +00:00
Owner

Descripción

Implementación completa del sistema de autenticación del frontend conectado al backend JWT existente. Incluye nuevo endpoint público de registro en el backend.

Closes #2

Cambios

Backend

  • POST /api/auth/register — endpoint público de registro (sin [Authorize])
  • sp_User_Register — SP con validación de duplicados (THROW 50001/50002)
  • DTOs: RegisterDto, RegisterResponseDto
  • IUserRepository.RegisterAsync() + implementación en UserRepository

Frontend (nuevo)

  • Bootstrap: Vite + React + TypeScript + Tailwind CSS
  • API Client: fetch nativo con inyección automática de Bearer token
  • Auth: Context API + useAuth hook + localStorage + JWT decode
  • Páginas: Login, Register, Dashboard
  • Rutas protegidas con ProtectedRoute
  • Router con react-router-dom

Docker + Config

  • Frontend/Dockerfile — multi-stage build (node:22-alpine → nginx:alpine)
  • Frontend/nginx.conf — SPA fallback + proxy /api
  • docker-compose.yml — servicio frontend en puerto 8181:80
  • .gitignore — patrones Node.js agregados
  • .env.example + .dockerignore

Verificación

  • Backend build: 0 errores, 0 advertencias
  • Frontend build: TypeScript + Vite compilan correctamente
  • TypeScript estricto — sin tipos any
  • Tailwind CSS exclusivo — sin CSS personalizado

Decisiones de diseño

  • Context API (no Redux) para estado de auth
  • fetch nativo (no axios) para llamadas API
  • localStorage para persistencia de token
  • Puerto frontend: 8181:80
## Descripción Implementación completa del sistema de autenticación del frontend conectado al backend JWT existente. Incluye nuevo endpoint público de registro en el backend. **Closes #2** ## Cambios ### Backend - `POST /api/auth/register` — endpoint público de registro (sin `[Authorize]`) - `sp_User_Register` — SP con validación de duplicados (THROW 50001/50002) - DTOs: `RegisterDto`, `RegisterResponseDto` - `IUserRepository.RegisterAsync()` + implementación en `UserRepository` ### Frontend (nuevo) - Bootstrap: Vite + React + TypeScript + Tailwind CSS - API Client: fetch nativo con inyección automática de Bearer token - Auth: Context API + useAuth hook + localStorage + JWT decode - Páginas: Login, Register, Dashboard - Rutas protegidas con `ProtectedRoute` - Router con react-router-dom ### Docker + Config - `Frontend/Dockerfile` — multi-stage build (node:22-alpine → nginx:alpine) - `Frontend/nginx.conf` — SPA fallback + proxy /api - `docker-compose.yml` — servicio frontend en puerto 8181:80 - `.gitignore` — patrones Node.js agregados - `.env.example` + `.dockerignore` ## Verificación - ✅ Backend build: 0 errores, 0 advertencias - ✅ Frontend build: TypeScript + Vite compilan correctamente - ✅ TypeScript estricto — sin tipos `any` - ✅ Tailwind CSS exclusivo — sin CSS personalizado ## Decisiones de diseño - Context API (no Redux) para estado de auth - fetch nativo (no axios) para llamadas API - localStorage para persistencia de token - Puerto frontend: 8181:80
dmolinari added 4 commits 2026-04-01 17:26:01 +00:00
- Created auth and user types (T10)
- Implemented API client with token handling (T11)
- Built AuthContext with JWT decoding (T12)
- Added ProtectedRoute component (T13)
- Created LoginPage, RegisterPage, DashboardPage (T14-T16)
- Updated App.tsx with routing and auth provider (T17)
- Added Dockerfile, nginx.conf for frontend deployment (T18-T19)
- Updated docker-compose.yml to include frontend service (T20)
- Updated .gitignore to exclude frontend build artifacts (T21)
- Removed unused App.css (T22)

Refs #2
dmolinari merged commit 869cc66a2f into main 2026-04-01 17:38:49 +00:00
dmolinari deleted branch feat/autenticacion-frontend 2026-04-01 17:38:51 +00:00
Sign in to join this conversation.