se supone que mcp server up
All checks were successful
build-and-push / build (push) Successful in 17s
build-and-push / deploy (push) Successful in 19s

This commit is contained in:
2025-05-02 19:33:50 -06:00
parent 022086f49d
commit b5e40cf4ac
1516 changed files with 242801 additions and 1 deletions

167
README.md
View File

@@ -1 +1,166 @@
git clone gitea:nucleo000/miproyecto.git
# Planilla
**Sistema de gestión de planillas** compuesto por:
* **Base de datos**: PostgreSQL
* **API**: Express + Node.js (módulo `api`)
* **Interfaz de usuario**: Vue 3 + Vite (módulo `ui`)
* **Orquestación**: Docker Compose
* **Proxy y SSL**: nginx-proxy-manager (red `principal`)
---
## 📂 Estructura del proyecto
```
planilla/
├─ .gitea/workflows/build.yml # CI/CD: build + push + deploy
├─ api/ # servicio API
│ ├─ Dockerfile
│ ├─ package.json
│ └─ server.js
├─ ui/ # frontend Vue 3
│ ├─ Dockerfile
│ ├─ index.html
│ ├─ src/
│ └─ vite.config.js
├─ Dockerfile # imagen raíz (si aplica)
├─ docker-compose.yml # orquestación de todos los servicios
└─ README.md # este documento
```
---
## 📝 Requisitos
* **Docker** (v20+)
* **Docker Compose** (v2+)
* **Node.js** (v18+) y **npm** para desarrollo local
* **Acceso a red** `app-net` y `principal` en Docker
---
## ⚙️ Variables de entorno
Si querés cambiar credenciales, editá directamente en `docker-compose.yml` o usá un `.env`:
```dotenv
COMPOSE_PROJECT_NAME=planilla
POSTGRES_USER=usuario
POSTGRES_PASSWORD=clave
POSTGRES_DB=midb
```
---
## 🚀 Levantando los servicios
1. **Clonar repo**
```bash
```
git clone [https://gitea.interno.com/nucleo000/planilla.git](https://gitea.interno.com/nucleo000/planilla.git)
cd planilla
````
2. **Construir y levantar**
```bash
docker compose up -d --build
````
3. **Ver logs**
```bash
```
docker compose logs -f api ui
````
4. **Detener todo**
```bash
docker compose down --remove-orphans
````
---
## 📡 Acceso a la aplicación
* La **UI** no expone puertos en el host. En Nginx Proxy Manager (red `principal`):
* **Domino**: `planilla.midominio.com`
* **Scheme**: http
* **Forward Hostname**: `planilla-ui` (o `ui` si así lo nombraste)
* **Forward Port**: `80`
Después podés habilitar SSL Lets Encrypt desde la pestaña **SSL**.
* La **API** corre internamente en `planilla-api:4000` y no se expone externamente. Vu hace proxy la UI o clientes internos.
---
## 🗄️ Detalles de cada servicio
### Base de datos (db)
* Imagen: `postgres:15`
* Volumen persistente: `db_data`
* Credenciales en `docker-compose.yml`.
### API (api)
* **Framework**: Express
* **DB**: `pg` (Pool)
* **Endpoints**:
* `GET /api/items` → devuelve `items` desde Postgres.
* Arranca en puerto **4000** internamente.
* Código principal en `api/server.js`.
> Aviso: si ves `SyntaxError` al usar `import`, asegurate de tener en `api/package.json`:
>
> ```json
> {
> "type": "module"
> }
> ```
### UI (ui)
* **Framework**: Vue 3 + Vite
* **Build**: produce carpeta `dist/` y se sirve con Nginx
* Arranca en puerto **80** internamente.
* Código fuente en `ui/src/`, configuración en `vite.config.js`.
---
## 📦 CI/CD (`.gitea/workflows/build.yml`)
1. **build**: construye imágenes `planilla`, `planilla-api`, `planilla-ui`, taggea con SHA y `latest`.
2. **push**: envía imágenes al registry `gitea.interno.com`.
3. **deploy**: conecta al registry, baja imágenes y hace `docker compose up -d --build`.
> Asegurate de usar las credenciales correctas en el workflow.
---
## 💡 Buenas prácticas
* Aísla tu red interna (`app-net`) para que sólo los contenedores hablen entre sí.
* Exponé servicios al exterior sólo vía `nginx-proxy-manager` en la red `principal`.
* Versioná tu `build.yml` y mantén secretos fuera del repo (ideal: `secrets.GITEA_PASSWORD`).
* Usa nombres de contenedor explícitos (`container_name`) para identificar fácilmente.
---
## 🤝 Contribuciones
1. Hacé un fork y trabajá en una rama nueva.
2. Abrí PR describiendo cambios.
3. Chequeá que el CI pase y la app funcione.
---
## 📄 Licencia
MIT © 2025 Equipo Planilla