Aplicación fullstack desarrollada con:
- Backend: Node.js + Express + TypeScript
- Base de datos: PostgreSQL
- Autenticación: JWT
- Frontend: React + TypeScript
- Arquitectura limpia (controllers, services, repositories)
El sistema permite:
- Registro de usuarios
- Login con JWT
- Perfil editable
- Gestión de roles (user / admin)
- Listado de usuarios para administradores
- Node.js
- Express
- TypeScript
- PostgreSQL
- bcryptjs
- jsonwebtoken
- express-validator
- React 18
- TypeScript
- React Router
- Axios
- CSS puro
root/ ├── backend/ ├── frontend/ ├── database/ └── package.json
- Node.js 18+
- PostgreSQL 14+
- npm
Crear un archivo .env dentro de backend/:
- Crear base de datos:
CREATE DATABASE woow_db
Ejecutar database/schema.sql
Ejecutar database/seed.sql (opcional)
Instalación
Instalar dependencias del backend:
cd backend
npm install
Instalar dependencias del frontend:
cd frontend
npm install
Ejecutar Proyecto
cd ..
npm run dev
Desde la raíz del proyecto:
```bash
npm install
npm run devUsuario Admin
Email: admin@example.com
Password: 12345678
Usuario Normal
Email: user@example.com
Password: 12345678
Endpoints
Registro
POST /api/auth/register
Login
POST /api/auth/login
Perfil
GET /api/users/me
Actualizar Perfil
PUT /api/users/me
Listar Usuarios (admin)
GET /api/users
-
Passwords hasheados con bcrypt
-
JWT con userId, email y role
-
Middleware de autenticación
-
Middleware de autorización por rol
-
Validaciones con express-validator
-
Prepared statements (prevención SQL injection)
-
No se exponen passwords en respuestas ##Consideraciones
-
TypeScript estricto
-
Separación de responsabilidades
-
Manejo centralizado de errores
-
Variables sensibles en .env