Chat privado con documentos para equipos muy pequeños.
Este repositorio está organizado como un monorepo con:
api/: API en TypeScript (Express + Kysely) sobre Postgresflyway/: Migraciones de base de datosweb-front-end/: Frontend en Vite + React + TypeScriptdocker-compose.yml: Orquestación local (Postgres, Flyway, API, Web)
- Docker y Docker Compose
- (Opcional para desarrollo local sin Docker) Node.js 20.x y pnpm/npm
Copie .env.example a .env en la raíz si desea sobrescribir valores por defecto.
Valores por defecto ya están en docker-compose.yml y .env.example:
- Postgres: usuario
lawbot, passwordlawbot, baselawbot - API: puerto
4000 - Web: puerto
5173
- Arrancar todos los servicios
# Desde la raíz del repo
docker compose up -dEsto levanta:
postgresenlocalhost:5432flywayque aplica migraciones automáticamenteapi(Express) enhttp://localhost:4000web(Vite) enhttp://localhost:5173
- Verificar salud de la API
curl http://localhost:4000/health
# {"status":"ok"}- Iniciar sesión en el frontend
- Abra
http://localhost:5173 - Usuario seed:
admin@lawbot.local - Contraseña:
admin
Nota: En el MVP, la ruta de login (POST /auth/login) valida el usuario y hace un chequeo de contraseña simplificado (acepta admin o user). La migración V2__seed_admin_user.sql inserta el usuario admin. Más adelante se integrará verificación con hash real.
- Parar los servicios
docker compose downSi prefieres correr cada servicio manualmente:
- Base de datos Postgres
- Asegúrate de tener Postgres 15+ corriendo y una base creada
lawbotcon usuariolawbot/lawbot. - Ajusta credenciales en variables de entorno si difieren.
- Aplicar migraciones con Flyway
# Usando contenedor flyway
docker run --rm -v $(pwd)/flyway:/flyway --network host \
-e FLYWAY_URL=jdbc:postgresql://localhost:5432/lawbot \
-e FLYWAY_USER=lawbot -e FLYWAY_PASSWORD=lawbot \
flyway/flyway:10 migrate- API
cd api
npm i
npm run dev
# API en http://localhost:4000- Web
cd web-front-end
npm i
npm run dev
# Web en http://localhost:5173.
├── api/
│ ├── package.json
│ ├── tsconfig.json
│ └── src/
│ ├── index.ts
│ ├── routes/
│ │ ├── auth.ts
│ │ └── health.ts
│ └── utils/
│ ├── db.ts
│ └── env.ts
├── flyway/
│ ├── flyway.conf
│ └── migrations/
│ ├── V1__initial_schema.sql
│ └── V2__seed_admin_user.sql
├── web-front-end/
│ ├── index.html
│ ├── package.json
│ ├── tsconfig.json
│ ├── vite.config.ts
│ └── src/
│ ├── App.tsx
│ ├── main.tsx
│ ├── auth/
│ │ └── AuthContext.tsx
│ ├── components/
│ │ └── ProtectedRoute.tsx
│ ├── lib/
│ │ └── api.ts
│ └── pages/
│ ├── Dashboard.tsx
│ └── Login.tsx
├── .env.example
└── docker-compose.yml
GET /health— comprobación de saludPOST /auth/login— login con body JSON{ email, password }
Respuesta de login (ejemplo):
{
"token": "<jwt>",
"user": {
"id": 1,
"name": "Administrador",
"email": "admin@lawbot.local",
"role": "admin"
}
}- Flyway no migra: verifica que
postgresesté saludable antes de que arranqueflyway. Con Docker,docker compose logs flyway. - API no levanta: revisa dependencias instaladas en
api/(el contenedor ejecutanpm ci || npm i). Chequeadocker compose logs api. - Web no compila: revisa dependencias en
web-front-end/. Chequeadocker compose logs web. - CORS: la API permite origen
WEB_APP_ORIGIN(por defectohttp://localhost:5173). Ajusta variable si accedes desde otro host/puerto.
Ver los documentos de producto en el README original del proyecto (secciones: FEATURES.md, USER_STORIES.md, ACCEPTANCE_CRITERIA.md, etc.). Este repo implementa la base técnica para empezar a iterar.