Plataforma privada para crear, editar, previsualizar y publicar experiencias audiovisuales interactivas completamente personalizables.
🔗 Repositorio: github.com/boris13jbb/dedica-flow
# 1. Clonar repositorio
git clone https://github.com/boris13jbb/dedica-flow.git
cd dedica-flow
# 2. Ejecutar setup automático
chmod +x setup.sh
./setup.sh
# 3. Configurar variables de entorno (editar .env.local)
# 4. Iniciar desarrollo
npm run dev➡️ Instalación detallada: Ver sección Instalación
- Editor Visual Completo: Interfaz de tres columnas (escenas, preview, inspector) con autosave
- Escenas 3D y 2D: Intro, Galaxy, Message, Finale, Nebula, Flowers, PhotoOrbit
- Audio Manager: Reproducción con fade in/out, control de volumen y loop
- Media Library: Gestión de assets con Supabase Storage
- Sistema de Publicación: Versionado completo con snapshots y URLs públicas
- Performance Optimizada: Detección automática de calidad, WebGL fallbacks, responsive design
- Multi-tenancy Ready: Arquitectura preparada para SaaS con workspaces y RLS
- Framework: Next.js 16.3.5 (App Router, React Server Components)
- React: 19.2.8 con TypeScript strict mode
- UI Components: shadcn/ui + Tailwind CSS
- 3D Rendering: three.js + @react-three/fiber + @react-three/drei
- Animations: GSAP + Framer Motion
- State Management: Zustand (editor) + React Hook Form
- Validation: Zod
- Drag & Drop: dnd-kit
- Supabase: PostgreSQL + Auth + Storage
- RLS Policies: Seguridad a nivel de fila
- Server Actions: Mutaciones de datos
- API Routes: Operaciones de media
- Deployment: Vercel (recomendado)
- Testing: Vitest + Testing Library + Playwright
- Linting: ESLint + TypeScript strict
- Node.js 18+
- npm o pnpm
- Cuenta de Supabase
git clone https://github.com/boris13jbb/dedica-flow.git
cd dedica-flownpm installCrea un archivo .env.local en la raíz:
# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://tu-proyecto.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=tu-anon-key
SUPABASE_SERVICE_ROLE_KEY=tu-service-role-keyEjecuta las migraciones en Supabase:
# En el dashboard de Supabase, ejecuta los archivos SQL en orden:
# 1. supabase/migrations/20260921000000_initial_schema.sql
# 2. supabase/migrations/20260921010000_storage_setup.sql
# 3. supabase/seed.sql (opcional, datos de ejemplo)npm run devAbre http://localhost:3000 en tu navegador.
/workspace
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── admin/ # Panel administrativo
│ │ ├── api/ # API Routes
│ │ ├── p/ # Experiencias públicas
│ │ └── login/ # Autenticación
│ ├── components/
│ │ ├── admin/ # Componentes admin
│ │ ├── editor/ # Editor de experiencias
│ │ ├── experience/ # Renderer y escenas
│ │ ├── media/ # Media library
│ │ ├── publish/ # Sistema de publicación
│ │ └── ui/ # shadcn/ui components
│ ├── hooks/ # Custom hooks
│ ├── lib/ # Utilidades
│ ├── stores/ # Zustand stores
│ └── types/ # TypeScript types
├── supabase/
│ ├── migrations/ # Migraciones SQL
│ └── seed.sql # Datos de ejemplo
└── public/ # Assets estáticos
Inicia sesión con tu cuenta de Supabase en /login.
- Ve a
/adminy haz clic en "Nuevo Proyecto" - Define nombre, slug y título
- Abre el editor en
/admin/projects/[id]/edit - Agrega escenas desde el panel izquierdo
- Configura cada escena en el inspector (derecha)
- Previsualiza en el panel central
- Ve a
/admin/projects/[id]/media - Sube imágenes, videos y audios
- Usa los assets en las escenas
- Ve a
/admin/projects/[id]/publish - Haz clic en "Publicar" para generar un snapshot
- La experiencia estará disponible en
/p/[slug]
# Tests unitarios
npm run test
# Tests E2E
npm run test:e2e
# Linter
npm run lint
# Type checking
npm run type-check-
Quality Manager: Ajuste automático de calidad según dispositivo
- Detección de memoria, DPR, móvil
- Multiplicador de partículas
- Configuración de pixelRatio
-
WebGL Fallback: Detección y mensaje para navegadores sin WebGL
-
Lazy Loading: Suspense boundaries para componentes pesados
-
Error Boundaries: Captura y recuperación de errores en renderer
-
Prefers-reduced-motion: Respeto a preferencias de accesibilidad
-
Responsive Design: Mobile-first con breakpoints optimizados
-
Bundle Optimization:
optimizePackageImportspara three.js y otros- Tree-shaking automático
- Code splitting por ruta
| Nivel | Partículas | Bloom | Shadows | Antialias | PixelRatio |
|---|---|---|---|---|---|
| Low | 30% | ❌ | ❌ | ❌ | ≤1 |
| Medium | 60% | ❌ | ❌ | ✅ | ≤1.5 |
| High | 100% | ✅ | ✅ | ✅ | ≤2 |
Todas las tablas tienen políticas RLS activas:
- workspaces: Solo miembros autorizados
- workspace_members: Solo administradores del workspace
- projects: Solo miembros del workspace
- publications: Solo miembros del workspace (lectura pública para activas)
- project_assets: Solo miembros del workspace (lectura pública)
- Escritura: Solo usuarios autenticados de su workspace
- Lectura pública: Todos los assets (necesario para
/p/[slug])
- Conecta tu repositorio en Vercel
- Configura las variables de entorno:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY
- Deploy automático en cada push
npm run build
npm start| Tipo | Descripción | Config Principal |
|---|---|---|
| intro | Pantalla de bienvenida con partículas | title, subtitle, duration |
| galaxy | Galaxia 3D con estrellas rotantes | starCount, rotationSpeed |
| message | Mensaje animado con estilos configurables | text, fontSize, color |
| finale | Pantalla final con opción de repetir | message, buttonText |
| nebula | Efecto nebulosa 3D con partículas de color | density, colors, speed |
| flowers | Flores 3D con múltiples modos de disposición | mode, count, texture |
| photoOrbit | Fotos orbitando en círculo 3D | images, radius, speed |
- Crea el componente en
src/components/experience/scenes/[nombre]/ - Registra en
src/components/experience/registry/scene-registry.ts:
export const sceneRegistry = new Map<SceneType, SceneDefinition>([
// ... escenas existentes
['tuEscena', {
type: 'tuEscena',
name: 'Tu Escena',
description: 'Descripción',
icon: 'icon-name',
defaultConfig: { /* config por defecto */ },
editorFields: [ /* campos del inspector */ ],
}],
])- Agrega el case en
scene-renderer.tsx
Este proyecto está diseñado como plataforma privada MVP. Para modificaciones:
- Respeta la arquitectura multi-tenancy
- Mantén RLS policies actualizadas
- Ejecuta tests antes de commit
- Documenta nuevas escenas en el registro
- FASE 1-4: Core architecture + Supabase + Auth + Admin + Editor base
- FASE 5: ExperienceRenderer + Audio Manager
- FASE 6: Escenas 3D adicionales (Nebula, Flowers, PhotoOrbit)
- FASE 7: Media Library + Supabase Storage
- FASE 8: Sistema de publicación + versionado
- FASE 9: Responsive + Performance + Fallbacks
- FASE 10: Testing completo + Documentación final + Deploy producción
- ✅ Repositorio publicado en GitHub
| Documento | Descripción |
|---|---|
| ROADMAP.md | Plan de desarrollo y características futuras |
| ARCHITECTURE.md | Arquitectura técnica del proyecto |
| FAQ.md | Preguntas frecuentes |
| SECURITY.md | Política de seguridad |
| CODE_OF_CONDUCT.md | Código de conducta |
| CHANGELOG.md | Historial de cambios |
| docs/PERFORMANCE.md | Guía de optimización |
| docs/TESTING.md | Guía de testing |
| docs/PRODUCTION.md | Guía de producción |
Proyecto privado - Todos los derechos reservados.
Para problemas o preguntas sobre el proyecto:
- 📝 Issues en GitHub
- 📚 Documentación de Next.js
- 📚 Documentación de Supabase
- 📚 Documentación de React Three Fiber
Desarrollado con ❤️ usando Next.js, React, Three.js y Supabase