Los requerimientos estan detallados aqui. Click aqui para acceder al archivo de los requerimientos
Monorepo con tres partes:
- /app -> Server/Backend/API REST -> (NestJs + Express + Prisma) -> http://localhost:4000
- /client -> Client/UI/Frontend -> (Next.js + React + Tailwind + NextAuth) -> http://localhost:3000
- Docs -> (Swagger) -> http://localhost:8000
- /infra -> Deployment -> (Docker Compose)
Tenemos dos maneras de levantar los servicios:
- Con las tecnologias individuales. necesitas descargar node con nvm/executable y postgres
- Usando docker para evitar instalar las tecnologias individualmente.
- Backend: http://localhost:4000
- Swagger: http://localhost:4000/api
- Frontend: http://localhost:3000
- Backend: http://localhost:2538
- Swagger: http://localhost:2538/api
- Frontend: http://localhost:2539
Como se levanta con docker, el archivo .env.template contiene las variables de entorno necesarias para levantar los servicios, se puede duplicar y pasarlo al .env
Variables requeridas:
PORT: puerto interno del backend (default recomendado:4000)DATABASE_URL: conexion PostgreSQL usada por PrismaJWT_SEED: secreto para firma/validacion de JWTNEST_API_URL: URL interna del backend para el frontend
Se usa compose cuando se trabajan mas de un servicio para mejor escalabilidad y control sobre los diferentes servicios (Server o Client).
docker compose -f infra/docker-compose.yml up -d --build
Verificar el estado de los contenedores y su correcto funcionamiento:
docker ps
docker logs ie-api # para verificar el log del servidor
docker logs ie-client # para verificar el log del clienteNota: el contenedor ie-api ejecuta migraciones automaticamente al iniciar.
Aplicar migraciones manualmente en el contenedor API:
docker compose -f infra/docker-compose.yml exec api npx prisma migrate deploy --config=prisma.config.ts --schema=prisma/schema.prisma- Crea un usuario en
http://localhost:2538/auth/register. No se le coloco middleware para evitar dejar un seed de un usuario. Usa swagger para crear el usuario accediendo al URIhttp://localhost:2538/api. alli vas a colocar en el body los datos de name, email y password. Ejemplo:
{
"name": "Deissy Cortez",
"email": "deissy@deissy.com",
"password": "123456"
}- Logearse en el cliente en
http://localhost:2539 - Hacer uso del CRUD de departamentos y ciudades

