Komodo CD

Desarrollo

Arrancar el monorepo en local, sus scripts y cómo se publican las imágenes y esta web.

Estructura

Komodo CD es un monorepo de Turborepo con workspaces de Bun.

Ruta Qué es
apps/backend Bun + Hono: un servidor fino para Better Auth, oRPC y OpenAPI.
apps/frontend Astro 7 (SSR) + React + TanStack Query.
apps/gateway El Caddy de producción: el único puerto publicado, que enruta al backend y al frontend.
apps/site Esta web: Astro estático, publicado en GitHub Pages.
trivy No es un workspace: un servicio de compose.yml con el servidor oficial aquasec/trivy, contra el que escanea imágenes el cliente trivy del backend.
packages/api Routers oRPC (v0), el cliente de Komodo y los servicios de ntfy y Trivy.
packages/auth Configuración de Better Auth y el resolvedor de sesión (cookie o x-api-key).
packages/db Drizzle (SQLite/libsql): esquema, relaciones, migraciones y seed.
packages/env Entorno del servidor validado (t3-env + zod).
packages/logger Logger pino compartido.
packages/config tsconfig compartido.

Arrancarlo

Necesita Bun 1.4 o posterior.

bun install
bun run setup:dev   # escribe .env con un secreto y una contraseña de admin aleatorios

bun run dev            # stack de desarrollo en Docker en http://localhost:4321 (recarga en caliente, Ctrl+C lo para)
bun run dev:down       # borra sus contenedores (-v también su base de datos)
bun run dev:local      # lo mismo sin Docker: backend (:3000) + frontend (:4321) con turbo watch
bun run dev:backend    # solo el backend, sin Docker
bun run dev:frontend   # solo el frontend, sin Docker

bun run dev pone el gateway de producción (apps/gateway/routes.caddy) delante de las dos apps, así que el enrutado en desarrollo es el de producción. Usa su propia base de datos SQLite en un volumen de Docker, aparte de apps/backend/dev.db. Sin Docker, el servidor de Vite reenvía /api, /rpc, /doc y /scalar al backend de la misma forma.

Scripts

Script Hace
bun run build Construye todas las apps (turbo build).
bun run check-types Comprueba los tipos de todas las apps y paquetes.
bun run format Formatea con Biome.
bun run check Lint y formato de Biome, con autocorrección.
bun run db:generate Genera las migraciones de Drizzle a partir del esquema.
bun run db:studio Abre Drizzle Studio.
bun run docker:up Construye las imágenes desde el código y arranca el stack.

Imágenes de Docker

Los Dockerfile están en apps/*/Dockerfile, pero el contexto de build es siempre la raíz del repositorio:

docker build -f apps/backend/Dockerfile -t komodo-cd-backend .
docker build -f apps/frontend/Dockerfile -t komodo-cd-frontend .
docker build -f apps/gateway/Dockerfile -t komodo-cd-gateway .

.github/workflows/docker-build.yml construye y publica las tres en ghcr.io/nonetss/komodo-cd-backend, ghcr.io/nonetss/komodo-cd-frontend y ghcr.io/nonetss/komodo-cd-gateway, y solo reconstruye las que tienen ficheros cambiados:

Disparador Etiquetas
Push a main latest, main, main-<sha>
Tag vX.Y.Z X.Y.Z, X.Y

El servicio trivy no se construye aquí: usa la imagen oficial aquasec/trivy, en la misma versión que TRIVY_VERSION de apps/backend/Dockerfile.

Para publicar una versión, etiqueta el commit y crea la release de GitHub:

git tag -a v1.0.0 -m "v1.0.0" && git push origin v1.0.0
gh release create v1.0.0 --generate-notes

Esta web

bun run dev:site   # http://localhost:4322/Komodo-CD/

Las páginas son Markdown en apps/site/src/content/docs/<idioma>/, un fichero por idioma, y los textos de la landing están en apps/site/src/i18n/ui.ts. Las capturas son las del directorio img/ de la raíz, compartidas con el README. .github/workflows/pages.yml publica la web en GitHub Pages en cada push a main que la toque.