|
37 | 37 | ├── adapters/ # Adaptadores de Interfaz (Controladores, Repositorios y Presentadores) |
38 | 38 | │ ├── controllers/ # CardController, TokenController, MetricsController |
39 | 39 | │ ├── presenters/ # statsCard, languagesCard, theme (Renderizadores de SVGs) |
40 | | -│ └── repositories/ # SQLiteTokenRepository, SQLiteMetricsRepository, ApiGitHubRepository, CachedGitHubRepository |
| 40 | +│ └── repositories/ # TypeORMTokenRepository, TypeORMMetricsRepository, ApiGitHubRepository, CachedGitHubRepository |
41 | 41 | └── infrastructure/ # Detalles técnicos concretos (Base de datos, Servidor Express, Criptografía) |
42 | | - ├── database/ # Inicialización de SQLite y migraciones |
| 42 | + ├── database/ # Configuración de TypeORM con PostgreSQL y Entidades |
| 43 | + │ └── entities/ # Entidades de base de datos (GlobalMetric, UserMetric, etc.) |
43 | 44 | ├── express/ # Enrutamiento, middlewares y arranque de servidor Express |
44 | 45 | ├── security/ # Criptografía AES-256-GCM y validación de scopes |
45 | 46 | └── server.ts # Entrypoint principal (Wrapper de importación limpio y relativo) |
@@ -73,6 +74,8 @@ El proyecto utiliza alias `@/` apuntando al directorio `src/`. Esto previene la |
73 | 74 | - `GITHUB_TOKEN`: Tu token de acceso personal de GitHub para evitar límites de tasa. |
74 | 75 | - `METRICS_KEY`: Clave secreta obligatoria para poder acceder a los endpoints de analíticas (`/api/metrics`). |
75 | 76 | - `TRUST_PROXY`: Número de saltos del proxy (por defecto `1`), útil para que el rate limit identifique correctamente las IPs detrás de Cloudflare, Nginx, etc. |
| 77 | + - `PRIVATE_STATS_COMING_SOON`: Estado de configuración de estadísticas privadas. Establécelo en `false` para habilitar y activar completamente la funcionalidad de registro/revocación de tokens (por defecto `true`). |
| 78 | + - `STATS_HISTORY_FREQUENCY_HOURS`: Frecuencia mínima en horas entre tomas de instantáneas del historial de estadísticas del usuario (por defecto `12`). |
76 | 79 |
|
77 | 80 | ### Scripts de Desarrollo |
78 | 81 |
|
@@ -152,25 +155,32 @@ Este microservicio implementa las siguientes medidas de seguridad para entornos |
152 | 155 |
|
153 | 156 | ## 🐳 Despliegue en Docker y Coolify |
154 | 157 |
|
155 | | -Este proyecto incluye un `Dockerfile` optimizado con builds en multi-etapa y configuración para correr bajo el usuario no root `node`. |
| 158 | +Este proyecto incluye un `Dockerfile` optimizado con builds en multi-etapa y configuración segura que se ejecuta bajo el usuario no root `node`. |
156 | 159 |
|
157 | 160 | ### Pruebas Locales con Docker |
158 | | -Para evitar perder el histórico de métricas (base de datos SQLite) cuando se recrea o actualiza el contenedor, debes montar un volumen persistente apuntando al directorio `/usr/src/app/data`: |
| 161 | + |
| 162 | +Dado que la base de datos se ha migrado a PostgreSQL, el contenedor de la aplicación no requiere almacenamiento persistente en disco. Puedes enlazarlo a tu servidor de PostgreSQL local: |
159 | 163 |
|
160 | 164 | 1. Construir la imagen: |
161 | 165 | ```bash |
162 | 166 | docker build -t github-helpers . |
163 | 167 | ``` |
164 | | -2. Ejecutar el contenedor con volumen persistente: |
| 168 | +2. Ejecutar el contenedor pasando las credenciales de la base de datos en las variables de entorno: |
165 | 169 | ```bash |
166 | | - docker run -d -p 3000:3000 --name github-helpers-app -v github-helpers-db:/usr/src/app/data --env-file .env github-helpers |
| 170 | + docker run -d -p 3000:3000 --name github-helpers-app --env-file .env github-helpers |
167 | 171 | ``` |
168 | 172 |
|
169 | 173 | ### Despliegue en Coolify |
170 | 174 | 1. Crea un nuevo recurso de tipo **Application** en tu panel de Coolify. |
171 | 175 | 2. Selecciona **GitHub Repository** como fuente y apunta a este repositorio. |
172 | 176 | 3. En la configuración de construcción, selecciona **Dockerfile**. |
173 | 177 | 4. Configura el puerto de exposición en el puerto `3000`. |
174 | | -5. **Persistencia**: En la pestaña **Storages**, crea un volumen para montar en la ruta `/usr/src/app/data` (ej. `db-data:/usr/src/app/data`). Esto asegurará que tu base de datos SQLite no se pierda en cada despliegue. |
175 | | -6. Agrega las variables de entorno en la pestaña `Environment Variables` (ej. `GITHUB_TOKEN`, `METRICS_KEY`). |
176 | | -7. Haz clic en **Deploy**. Coolify leerá el `Dockerfile`, construirá el contenedor seguro de producción y lo pondrá en marcha con SSL automático. |
| 178 | +5. **Base de Datos**: Añade un servicio de base de datos **PostgreSQL** en Coolify. |
| 179 | +6. **Variables de Entorno**: Agrega en la pestaña `Environment Variables` los datos de acceso de la base de datos y tus tokens de seguridad: |
| 180 | + * `DB_HOST`: Host de tu base de datos PostgreSQL de Coolify. |
| 181 | + * `DB_PORT`: `5432` |
| 182 | + * `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD`: Datos de tu base de datos PostgreSQL. |
| 183 | + * `DB_SSL`: `'true'` (si la base de datos requiere SSL). |
| 184 | + * `DB_SYNCHRONIZE`: `'true'` (si deseas que cree las tablas al iniciar la primera vez). |
| 185 | + * `GITHUB_TOKEN`, `METRICS_KEY`, `TRUST_PROXY`. |
| 186 | +7. Haz clic en **Deploy**. Coolify construirá el contenedor seguro de producción y lo pondrá en marcha con SSL automático. |
0 commit comments