mirror of
https://origin.cursor.com/mrdevmx/panels.git
synced 2026-10-09 10:43:18 +00:00
No description
<!-- CURSOR_AGENT_PR_BODY_BEGIN --> ## Resumen Sustituye SQLite por **PostgreSQL** (2 bases: `panels_platform` + `panels_product` / esquemas `iam` y `core`), **Redis** (sesiones y cache) y **Cloudflare R2** para archivos. Validado en Coolify: Liquibase en el job `migrate`, API healthy, login SaaS tras `bootstrap-admin.ts platform`. ## Qué entra - Changelogs Liquibase Postgres, roles `_owner` / `_app`, RLS por `tenant_id`. - API Deno con postgres.js + Redis; sin FFI SQLite ni JRE en la imagen de tráfico. - `docker-compose.yml` de Coolify: `migrate` (one-shot, `!dev`) → `api` → `web-panel` / `web-saas`. Overlay local en `overlays/compose.local.yml` (no mezclar en Coolify). - `migrate` y `api` unidos a la red `coolify` para resolver UUIDs internos de Postgres/Redis. - R2: ListObjects (no HeadBucket); Deno `--allow-sys` para el SDK AWS. ## Coolify / ops (no olvidar) - Compose **solo** `docker-compose.yml`. Hosts = URL **internal**, no CONTAINER ID. - 6 `DATABASE_URL_*` + 2 `REDIS_URL_*` expandidas; `DOCS_KEY` 64 hex; `SESSION_SECRET`; `S3_*`; `DENO_ENV=production`. - Primer admin SaaS: `docker exec` → `bootstrap-admin.ts platform`. Usuario `admin` / `SEED_PASSWORD`. No se crea en cada boot. ## Cómo probar - `/v1/health` con core, platform, redis y `storage.backend: "s3"`. - Login SaaS `admin` + `SEED_PASSWORD` tras el bootstrap. Base: `main`. <!-- CURSOR_AGENT_PR_BODY_END --> <div><a href="https://cursor.com/agents/bc-556d1a5c-47ed-4a0b-bd66-06f84a8f41e1?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-web-light.png"><img alt="Open in Web" width="114" height="28" src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a> <a href="https://cursor.com/background-agent?bcId=bc-556d1a5c-47ed-4a0b-bd66-06f84a8f41e1&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source media="(prefers-color-scheme: light)" srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img alt="Open in Cursor" width="131" height="28" src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a> </div> |
||
|---|---|---|
| .github/workflows | ||
| api | ||
| db | ||
| docs | ||
| overlays | ||
| tmp/pdfs | ||
| web | ||
| web-panel | ||
| web-saas | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile.api | ||
| Dockerfile.migrate | ||
| Dockerfile.provision | ||
| Dockerfile.web-panel | ||
| Dockerfile.web-saas | ||
| package.json | ||