Repositorio oficial para el Trabajo Práctico Integrador de la materia Desarrollo de Software (UTN FRRe).
Este proyecto implementa una plataforma moderna de gestión de inventario con una arquitectura de microservicios, seguridad avanzada mediante IAM (Identity and Access Management) y persistencia en la nube.
El sistema opera bajo un esquema de Monorepo dividido en capas:
- Frontend (
/TPI-FRONT-STOCK): SPA desarrollada con React 19 y Vite. Utiliza Tailwind CSS v4 y Material UI v7 para la interfaz. - Backend (
/TPI-BACK-STOCK): API REST en Express v5 y TypeScript. - Infraestructura (
/docker): Orquestación de contenedores para el servicio de identidad (Keycloak) y la API. - Base de Datos:
- Gestión de Usuarios (IAM): PostgreSQL local (Docker).
- Negocio/Stock: PostgreSQL en la nube (Supabase).
Utilizamos las versiones más recientes y estables de las tecnologías:
| Área | Tecnología | Versión / Detalle |
|---|---|---|
| Frontend | React + Vite | v19 / v7 |
| Estilos | Tailwind CSS | v4.1 (Última generación) |
| Componentes | Material UI | v7 |
| Estado | TanStack Query | v5 (Gestión asíncrona) |
| Backend | Express | v5 (Next Gen) |
| ORM | TypeORM | Conexión a Supabase |
| Seguridad | Keycloak | v23 (OIDC / OAuth2) |
Sigue estos pasos en orden para levantar el ecosistema completo.
Este proyecto requiere configurar variables en tres ubicaciones.
A. Infraestructura (/docker/.env)
Crea un archivo .env dentro de la carpeta docker/. Es vital para que Docker Compose funcione.
# --- Configuración Base de Datos Keycloak (Local) ---
POSTGRES_DB=keycloak_db
POSTGRES_USER=keycloak_user
POSTGRES_PASSWORD=admin
# --- Configuración Keycloak Admin ---
KEYCLOAK_ADMIN=admin
KEYCLOAK_ADMIN_PASSWORD=admin
# --- Credenciales Supabase (Base de datos de Stock) ---
SUPABASE_DB_USER=postgres
SUPABASE_DB_PASSWORD=TU_PASSWORD_SUPABASE
SUPABASE_DB_OPTIONS=project=tu-project-id
# --- Configuración Cliente Keycloak (Para el Backend) ---
KEYCLOAK_CLIENT_ID=backend-api
KEYCLOAK_CLIENT_SECRET=TU_CLIENT_SECRET
KEYCLOAK_TOKEN_URL=http://keycloak:8080/realms/ds-2025-realm/protocol/openid-connect/tokenB. Backend (/TPI-BACK-STOCK/.env)
Copia el archivo .env.example que está en la carpeta y ajústalo con tus credenciales.
C. Frontend (/TPI-FRONT-STOCK/.env)
Crea un archivo .env en la carpeta del frontend con este contenido:
VITE_API_URL=http://localhost:8000Desde la raíz del proyecto, ejecutamos Docker Compose para levantar la Base de Datos y Keycloak:
cd docker
docker-compose up -d --buildEsto iniciará:
- PostgreSQL (Local): Para datos internos de Keycloak.
- Keycloak: Servicio de identidad (disponible en
http://localhost:8080).- Nota: Se importará automáticamente la configuración desde
./realm-config.
- Nota: Se importará automáticamente la configuración desde
- Backend API: Disponible en
http://localhost:8000.
Nota: El backend dentro de Docker se compila apuntando a la base de datos de Supabase definida en las variables de entorno.
El frontend se ejecuta fuera de Docker para aprovechar la velocidad de desarrollo de Vite. Abrí una nueva terminal y ejecutá:
cd ../TPI-FRONT-STOCK
npm install
npm run devAccede a la aplicación en: http://localhost:5173
Para trabajar en el código del Backend y ver cambios en tiempo real sin reiniciar Docker:
- En
docker/docker-compose.yml, comentá o detené el serviciostock_backend_api. - Mantén corriendo
keycloakykeycloak_db. - Ve a la carpeta
/TPI-BACK-STOCKy ejecutá:npm run dev
Proyecto académico para la cátedra de Desarrollo de Software - UTN FRRe.