diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9f47bce --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +# general +.git +node_modules + +# dejá fuera todo lo que no sea código +*.log +tmp +dist +build + +# ‼️ NO ignorés core/prisma ‼️ diff --git a/api/Dockerfile b/api/Dockerfile index f40d036..7c2fd8e 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,16 +1,28 @@ -FROM node:18-alpine - +######################## builder ######################## +FROM node:18-alpine AS builder WORKDIR /app -COPY package*.json ./ -RUN npm install +# ─── manifests ─────────────────────────────────────────── +COPY api/package*.json ./ # api +COPY core/prisma/package*.json ./core/prisma/ # prisma schema -COPY . . +# ─── deps ──────────────────────────────────────────────── +RUN npm ci --omit=dev --workspaces --include-workspace-root -# Copiamos el script de arranque -COPY entrypoint.sh /app/entrypoint.sh -RUN chmod +x /app/entrypoint.sh +# ─── código fuente ────────────────────────────────────── +COPY api/. ./ # api code +COPY core/prisma ./core/prisma # schema & migraciones +# si ocupás el cliente: +RUN npx prisma generate + +######################## runtime ######################## +FROM node:18-alpine +WORKDIR /app + +COPY --from=builder /app/node_modules ./node_modules +COPY --from=builder /app/api ./ # solo la api + +ENV NODE_ENV=production EXPOSE 4000 - -CMD ["sh", "/app/entrypoint.sh"] +CMD ["node", "server.js"] diff --git a/api/package.json b/api/package.json index 93239d5..73b9107 100644 --- a/api/package.json +++ b/api/package.json @@ -1,17 +1,25 @@ { - "name": "planilla-api", + "name": "@empresa/api", "version": "1.0.0", + "private": true, "type": "module", - "main": "server.js", + "scripts": { - "start": "node server.js" + "dev": "nodemon server.js", + "start": "node server.js", + "prisma:generate": "prisma generate" }, + "dependencies": { - "@empresa/prisma-schema": "1.0.0", + "@empresa/prisma-schema": "file:../core/prisma", + "express": "^4.19.2", "cors": "^2.8.5", - "express": "^4.18.2", - "node-cron": "^4.0.5", - "pg": "^8.8.0" + "dotenv": "^16.4.1", + "prisma": "^6.8.2", + "@prisma/client": "^6.8.2" }, - "devDependencies": {} + + "devDependencies": { + "nodemon": "^3.0.2" + } } diff --git a/estructura.txt b/estructura.txt index 829bb25..75e94ec 100644 --- a/estructura.txt +++ b/estructura.txt @@ -9,7 +9,10 @@ C:\no guardar\nucleo V3\planilla\.env C:\no guardar\nucleo V3\planilla\docker-compose.yml C:\no guardar\nucleo V3\planilla\estructura.txt C:\no guardar\nucleo V3\planilla\Makefile +C:\no guardar\nucleo V3\planilla\package-lock.json +C:\no guardar\nucleo V3\planilla\package.json C:\no guardar\nucleo V3\planilla\README.md +C:\no guardar\nucleo V3\planilla\tsconfig.base.json C:\no guardar\nucleo V3\planilla\agent\example webhooksEvents C:\no guardar\nucleo V3\planilla\agent\processMessage C:\no guardar\nucleo V3\planilla\agent\respuestas @@ -19,6 +22,7 @@ C:\no guardar\nucleo V3\planilla\agent\Dockerfile C:\no guardar\nucleo V3\planilla\agent\gemini.js C:\no guardar\nucleo V3\planilla\agent\handlers.js C:\no guardar\nucleo V3\planilla\agent\index.js +C:\no guardar\nucleo V3\planilla\agent\jsconfig.json C:\no guardar\nucleo V3\planilla\agent\logger.js C:\no guardar\nucleo V3\planilla\agent\package.json C:\no guardar\nucleo V3\planilla\agent\routes.js @@ -38,13 +42,12 @@ C:\no guardar\nucleo V3\planilla\api\.env C:\no guardar\nucleo V3\planilla\api\.env.example C:\no guardar\nucleo V3\planilla\api\Dockerfile C:\no guardar\nucleo V3\planilla\api\entrypoint.sh +C:\no guardar\nucleo V3\planilla\api\jsconfig.json C:\no guardar\nucleo V3\planilla\api\package-lock.json C:\no guardar\nucleo V3\planilla\api\package.json C:\no guardar\nucleo V3\planilla\api\server.js C:\no guardar\nucleo V3\planilla\api\dev\docker-compose.yml C:\no guardar\nucleo V3\planilla\api\prisma\generated -C:\no guardar\nucleo V3\planilla\api\prisma\migrations -C:\no guardar\nucleo V3\planilla\api\prisma\schema.prisma C:\no guardar\nucleo V3\planilla\api\prisma\generated\client C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\client.d.ts @@ -58,6 +61,7 @@ C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\index.d.ts C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\index.js C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\package.json C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\query_engine-windows.dll.node +C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\query_engine-windows.dll.node.tmp26660 C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\schema.prisma C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\wasm.d.ts C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\wasm.js @@ -69,23 +73,39 @@ C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime\library.d.t C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime\library.js C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime\react-native.js C:\no guardar\nucleo V3\planilla\api\prisma\generated\client\runtime\wasm.js -C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250515020056_init -C:\no guardar\nucleo V3\planilla\api\prisma\migrations\migration_lock.toml -C:\no guardar\nucleo V3\planilla\api\prisma\migrations\20250515020056_init\migration.sql +C:\no guardar\nucleo V3\planilla\api\routes\asistencias +C:\no guardar\nucleo V3\planilla\api\routes\empleados +C:\no guardar\nucleo V3\planilla\api\routes\planillas +C:\no guardar\nucleo V3\planilla\api\routes\tareas C:\no guardar\nucleo V3\planilla\api\routes\clientesRandom.js +C:\no guardar\nucleo V3\planilla\api\routes\asistencias\asistencias.js +C:\no guardar\nucleo V3\planilla\api\routes\empleados\empleados.js +C:\no guardar\nucleo V3\planilla\api\routes\planillas\planillas.js +C:\no guardar\nucleo V3\planilla\api\routes\tareas\tareas.js +C:\no guardar\nucleo V3\planilla\core\prisma +C:\no guardar\nucleo V3\planilla\core\prisma\client.ts +C:\no guardar\nucleo V3\planilla\core\prisma\index.ts +C:\no guardar\nucleo V3\planilla\core\prisma\package.json +C:\no guardar\nucleo V3\planilla\core\prisma\schema.prisma +C:\no guardar\nucleo V3\planilla\core\prisma\tsconfig.json C:\no guardar\nucleo V3\planilla\dev\scripts C:\no guardar\nucleo V3\planilla\dev\scripts\estructura.ps1 C:\no guardar\nucleo V3\planilla\mcp\Dockerfile C:\no guardar\nucleo V3\planilla\mcp\index.js +C:\no guardar\nucleo V3\planilla\mcp\jsconfig.json C:\no guardar\nucleo V3\planilla\mcp\package-lock.json C:\no guardar\nucleo V3\planilla\mcp\package.json C:\no guardar\nucleo V3\planilla\ui\public C:\no guardar\nucleo V3\planilla\ui\src +C:\no guardar\nucleo V3\planilla\ui\.env C:\no guardar\nucleo V3\planilla\ui\Dockerfile C:\no guardar\nucleo V3\planilla\ui\index.html C:\no guardar\nucleo V3\planilla\ui\package-lock.json C:\no guardar\nucleo V3\planilla\ui\package.json C:\no guardar\nucleo V3\planilla\ui\README.md +C:\no guardar\nucleo V3\planilla\ui\README.ms +C:\no guardar\nucleo V3\planilla\ui\tsconfig.json +C:\no guardar\nucleo V3\planilla\ui\tsconfig.node.json C:\no guardar\nucleo V3\planilla\ui\vite.config.js C:\no guardar\nucleo V3\planilla\ui\public\vite.svg C:\no guardar\nucleo V3\planilla\ui\src\assets @@ -95,6 +115,7 @@ C:\no guardar\nucleo V3\planilla\ui\src\router C:\no guardar\nucleo V3\planilla\ui\src\stores C:\no guardar\nucleo V3\planilla\ui\src\tests C:\no guardar\nucleo V3\planilla\ui\src\views +C:\no guardar\nucleo V3\planilla\ui\src\apiClient.js C:\no guardar\nucleo V3\planilla\ui\src\App.vue C:\no guardar\nucleo V3\planilla\ui\src\main.js C:\no guardar\nucleo V3\planilla\ui\src\style.css @@ -115,19 +136,25 @@ C:\no guardar\nucleo V3\planilla\ui\src\components\planillas\cardPlanilla.vue C:\no guardar\nucleo V3\planilla\ui\src\components\planillas\tablaPlanillas.vue C:\no guardar\nucleo V3\planilla\ui\src\components\tareas\cardTarea.vue C:\no guardar\nucleo V3\planilla\ui\src\components\tareas\tablaTareas.vue -C:\no guardar\nucleo V3\planilla\ui\src\components\ui\navBar.vue -C:\no guardar\nucleo V3\planilla\ui\src\components\ui\sideDrawer.vue +C:\no guardar\nucleo V3\planilla\ui\src\components\ui\NavBar.vue +C:\no guardar\nucleo V3\planilla\ui\src\components\ui\SideDrawer.vue +C:\no guardar\nucleo V3\planilla\ui\src\components\ui\TopBar.vue C:\no guardar\nucleo V3\planilla\ui\src\router\index.js +C:\no guardar\nucleo V3\planilla\ui\src\stores\__tests__ C:\no guardar\nucleo V3\planilla\ui\src\stores\useAsistencias.js C:\no guardar\nucleo V3\planilla\ui\src\stores\useChat.js C:\no guardar\nucleo V3\planilla\ui\src\stores\useEmpleados.js C:\no guardar\nucleo V3\planilla\ui\src\stores\usePlanillas.js C:\no guardar\nucleo V3\planilla\ui\src\stores\useTareas.js +C:\no guardar\nucleo V3\planilla\ui\src\stores\useUi.js +C:\no guardar\nucleo V3\planilla\ui\src\stores\__tests__\useUi.spec.js C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias C:\no guardar\nucleo V3\planilla\ui\src\views\empleados C:\no guardar\nucleo V3\planilla\ui\src\views\planillas C:\no guardar\nucleo V3\planilla\ui\src\views\tareas +C:\no guardar\nucleo V3\planilla\ui\src\views\__tests__ C:\no guardar\nucleo V3\planilla\ui\src\views\ChatView.vue +C:\no guardar\nucleo V3\planilla\ui\src\views\NotFound.vue C:\no guardar\nucleo V3\planilla\ui\src\views\SettingsView.vue C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias\AsistenciaForm.vue C:\no guardar\nucleo V3\planilla\ui\src\views\asistencias\AsistenciasIndex.vue @@ -137,13 +164,14 @@ C:\no guardar\nucleo V3\planilla\ui\src\views\planillas\PlanillaForm.vue C:\no guardar\nucleo V3\planilla\ui\src\views\planillas\PlanillasIndex.vue C:\no guardar\nucleo V3\planilla\ui\src\views\tareas\TareaForm.vue C:\no guardar\nucleo V3\planilla\ui\src\views\tareas\TareasIndex.vue +C:\no guardar\nucleo V3\planilla\ui\src\views\__tests__\SettingsView.spec.js C:\no guardar\nucleo V3\planilla\worker\cron -C:\no guardar\nucleo V3\planilla\worker\prisma C:\no guardar\nucleo V3\planilla\worker\.env C:\no guardar\nucleo V3\planilla\worker\cron-worker.js C:\no guardar\nucleo V3\planilla\worker\Dockerfile +C:\no guardar\nucleo V3\planilla\worker\jsconfig.json C:\no guardar\nucleo V3\planilla\worker\package-lock.json C:\no guardar\nucleo V3\planilla\worker\package.json +C:\no guardar\nucleo V3\planilla\worker\sync-empleados.js C:\no guardar\nucleo V3\planilla\worker\cron\15min C:\no guardar\nucleo V3\planilla\worker\cron\15min\hello.sh -C:\no guardar\nucleo V3\planilla\worker\prisma\schema.prisma