Propósito: Documento de reglas y aprendizajes para el agente de desarrollo de LareiraConf'26. Contiene las mejores prácticas, patrones de trabajo y referencias a documentación clave que deben ser consultadas al iniciar nuevas tareas.
SIEMPRE revisar estos documentos al comenzar una nueva tarea:
docs/Definición.md- Especificación completa del proyecto, arquitectura, diseño y funcionalidadesdocs/CODING_CONVENTIONS.md- Convenciones de código TypeScript/React y estructura de archivosdocs/CONVENTIONAL_COMMITS_GUIDE.md- Formato estándar para commits y mensajesdocs/PLAN_IMPLEMENTACION.md- Estado actual del proyecto y próximos pasos
- Consultar
docs/Definición.mdpara entender el contexto antes de implementar - Respetar la estética retro pixelada y el tema narrativo de la "Lareira"
- Mantener coherencia con el stack: React + TypeScript + SCSS
- Implementar paso a paso, probando cada cambio
- Usar logs y debugging cuando las animaciones no funcionen
- No asumir que algo funciona sin confirmación del usuario
- Seguir Conventional Commits según
docs/CONVENTIONAL_COMMITS_GUIDE.md - Dividir cambios grandes en commits lógicos separados
- Usar scopes apropiados para el proyecto (header, speakers, sponsors, etc.)
- Verificar z-index: asegurar que esté por encima de otros elementos
- Verificar position: componentes animados necesitan
position: fixedoabsolute - Simplificar el trigger: usar elementos más generales como
body - Añadir logs: confirmar que useEffect se ejecuta y las animaciones se crean
- Probar diferentes tipos de scroll (vertical que controla horizontal vs horizontal puro)
- Verificar que los estilos CSS no bloqueen el scroll (
overflow: hiddenvsoverflow-x: auto) - Testar en dispositivo real, no solo en navegador automatizado
- COMMIT 1: Dependencias (package.json, package-lock.json)
- COMMIT 2: Componentes nuevos (archivos .tsx y .scss juntos)
- COMMIT 3: Componentes adicionales por funcionalidad
- COMMIT 4: Modificaciones a archivos existentes (App.tsx, estilos)
- COMMIT 5: Documentación (README, planes, guías)
# ✅ Buenos ejemplos
feat: add GSAP dependencies for scroll animations
feat: add GSAP scroll components
feat: add HomeSection component
refactor: integrate GSAP components into main app
docs: update implementation plan
# ❌ Evitar
fix: stuff
update: components
chore: changes- Colores principales: fondo oscuro (#0B0B0B), texto blanco (#FFFFFF), acento naranja (#FF6A00)
- Animaciones: suaves pero con carácter retro (ease-out-back, bounce effects)
- Elementos decorativos: antorchas, brasas, partículas, sprites pixelados
- Tipografía: display retro + cuerpo legible
- Hover effects: desplazamiento 1-2px, sombras duras estilo 8-bit
- Estados de botones: transiciones de 0.15-0.2s con easing apropiado
- Accessibility first: respetar
prefers-reduced-motion, contrast ratios AA - Mobile responsive: adaptar animaciones para dispositivos táctiles
- Leer documentación: revisar
docs/Definición.mdy documentos relevantes - Entender el contexto: qué parte de la narrativa de la Lareira se está implementando
- Revisar el estado actual: usar
git statusygit log --oneline -5 - Confirmar contexto y plan de accion con el usuario: no hacer autoaprove
- Planificar commits: dividir la tarea en commits lógicos
- Implementar paso a paso: una funcionalidad a la vez
- Probar constantemente: usar navegador y logs para validar
- No asumir éxito: esperar confirmación del usuario antes de continuar
- Documentar decisiones: añadir comentarios en código complejo
- Verificar que todo funciona: tanto en navegador automatizado como según feedback del usuario
- Hacer commits organizados: seguir la estructura de dependencias → componentes → modificaciones → docs
- Actualizar documentación: si se han aprendido nuevos patrones o reglas
import { ReactNode, useRef, useEffect } from "react";
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import "./Component.scss";
gsap.registerPlugin(ScrollTrigger);
interface ComponentProps {
// props tipadas
}
const Component = (props: ComponentProps): ReactNode => {
const { prop1, prop2 } = props;
const elementRef = useRef<HTMLDivElement>(null);
useEffect(() => {
// lógica de animación
return () => {
// cleanup
};
}, []);
return (
<div ref={elementRef} className="component">
{/* JSX */}
</div>
);
};
export default Component;- Validar refs: siempre verificar
if (!elementRef.current) return; - Cleanup apropiado: matar animaciones y limpiar timers en useEffect return
- Fallbacks: tener alternativas cuando las animaciones no se pueden cargar
- Responsive: considerar diferentes dispositivos y tamaños de pantalla
// ✅ Logs útiles para debugging
console.log("Initial scrollAmount:", scrollAmount);
console.log("Progress:", self.progress.toFixed(3), "X:", currentX);
// ❌ Logs inútiles
console.log("component loaded");
console.log("working");- "No veo nada" → revisar z-index, position, y timing de animaciones
- "No funciona el scroll" → probar diferentes configuraciones de ScrollTrigger
- "Se ve negro" → probable problema de posicionamiento o timing
- Pantalla en blanco → error de sintaxis o dependencias faltantes
- Si después de 3 intentos el enfoque no funciona → cambiar la implementación
- Si el navegador automatizado funciona pero el real no → simplificar la animación
- Si las animaciones son demasiado complejas → dividir en pasos más pequeños
- JavaScript bundle: < 180KB gzip
- Lazy loading: para componentes no críticos
- Animaciones: mantener 50+ FPS
- Imágenes: WebP optimizado
- Keyboard navigation: todos los elementos interactivos accesibles
- Screen readers: etiquetas apropiadas y aria-labels
- Contrast: cumplir AA mínimo
- Reduced motion: respetar preferencias del usuario
- Carga rápida: LCP < 2.5s
- Interacciones fluidas: respuesta < 100ms
- Mobile first: optimizar para dispositivos táctiles
- Fallbacks graceful: experiencia mínima viable si fallan las animaciones
- Always read docs first - La especificación tiene todas las respuestas
- Test iteratively - Una funcionalidad a la vez, con confirmación
- Debug systematically - Logs, simplificación, prueba en dispositivo real
- Commit logically - Dependencias → Componentes → Modificaciones → Docs
- Keep the narrative - Todo debe ser coherente con la temática de la Lareira
Documento actualizado basado en experiencias reales de desarrollo. Mantener actualizado conforme se aprendan nuevos patrones y se resuelvan más problemas.