build: enable production build for Dokploy deploy

- build script usa --webpack (Next 16 default es Turbopack, incompatible con la config webpack de @remotion)
- tsconfig excluye remotion/ (subproyecto autocontenido con su propio tsconfig; rompía el type-check con un import faltante)
- Dockerfile de producción (build + next start) y .dockerignore que deja fuera projects/ y data/ (llegan por volúmenes)
- CLAUDE.md actualizado al estado real (SQLite, webpack, Ark, Remotion integrado)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Carlos Narro
2026-08-11 04:37:01 +02:00
parent 3aaffd7358
commit e93adc8d69
5 changed files with 77 additions and 2 deletions

35
CLAUDE.md Normal file
View File

@@ -0,0 +1,35 @@
# Story Studio
App **Next.js 16** (App Router) para crear series animadas infantiles asistidas por IA: wizard de 3 pasos (Idea Motriz → Personajes → Capítulos), y luego por capítulo: guión conductor → (pre)escaleta → prompts de imagen → fondos → imágenes de plano → vídeos → render final. Los metadatos se persisten en **SQLite** (`data/story-studio.db`); las imágenes y vídeos generados van en disco bajo `projects/{slug}/`.
> **`CONTEXT.md` tiene el detalle de arquitectura, pero está parcialmente desactualizado** (describe persistencia en markdown/JSON "sin BD" y Turbopack — ambas cosas ya no son ciertas). Para persistencia usa el modelo SQLite de `src/lib/db.ts` / `db-service.ts`; para el resto (Character Assets, convenciones, estructura) sigue siendo buena referencia. Si tocas algo estructural, corrige `CONTEXT.md` a la vez.
## Stack (resumen)
- Next.js 16.1.6 · React 19 · TailwindCSS 4 · Lucide React · react-markdown + remark-gfm
- LLM texto: OpenAI **GPT-4o** (`openai`) · LLM imágenes: Google **Gemini `gemini-3-pro-image-preview`** / Nano Banana Pro (`@google/genai`)
- Vídeo: **BytePlus Ark — Seedance 1.5 Pro** (`ARK_API_KEY`, `src/lib/video-service.ts`)
- Render final de vídeo: **Remotion integrado en este proyecto** (`@remotion/renderer` + `@remotion/bundler`, `src/lib/remotion-service.ts`, `POST /api/render`)
- Persistencia: **SQLite** (`better-sqlite3`, `data/story-studio.db`, WAL) — `src/lib/db.ts` (esquema) + `db-service.ts` (acceso). Imágenes/vídeos en disco bajo `projects/{slug}/`.
## Arranque
```
npm run dev # servidor de desarrollo (Next.js, webpack)
```
Requiere `.env.local` en **UTF-8 sin BOM** con `OPENAI_API_KEY`, `GEMINI_API_KEY` y `ARK_API_KEY` (si se guarda como UTF-16 LE, Next.js no lee las variables).
> **Nota para agentes:** si necesitas levantar el dev server (`npm run dev`), arráncalo en **segundo plano / detached**. En primer plano no termina nunca y **bloquea el turno**.
## Proyecto hermano
Existe también un proyecto Remotion independiente en `../vibecoding/`. El render principal de Story Studio ya vive **dentro** de este repo (ver `remotion-service.ts` / `/api/render`).
<!-- orquestrator:org:story-studio:start -->
## Tu rol en el equipo
> Sección gestionada por el proyecto `orquestrator` (workspace «Essia»). No editar a mano: se regenera al cambiar el organigrama.
Eres **experto** de este proyecto dentro del workspace «Essia».
<!-- orquestrator:org:story-studio:end -->