Generador de puzzles de poliominós personalizable con soporte para corte láser. Crea piezas únicas con formas configurables (rectángulo, hexágono, círculo), texturas grabables, texto/emojis personalizados y exportación a SVG optimizado para máquinas láser.
- Formas base: Rectángulo, hexágono o círculo
- Dimensiones personalizables: 5-30 celdas de ancho/alto
- Tamaño de celda ajustable: 5-20mm para adaptarse a diferentes materiales
- Tamaño variable: Define el mínimo y máximo de celdas por pieza (2-20)
- Modo intrincado: Piezas que se entrelazan entre sí
- Serpenteo: Control de piezas compactas vs. alargadas
- Complejidad: Añade ramificaciones y formas en L/T/Y
- Texto personalizado: Graba caracteres en las piezas
- Librería Kawaii: Más de 100 emojis organizados por categorías
- Distribución configurable: Todas las piezas, alternadas o aleatorias
- Soporte multi-carácter: Emojis complejos ocupan 2 celdas
- 10 patrones diferentes: Líneas horizontales, verticales, diagonales, grid, puntos, ondas, círculos, zigzag, cruces y hexágonos
- Espaciado ajustable: 1-5mm
- Rotación: 0-180° en incrementos de 15°
- Distribución personalizable: Todas, alternadas o aleatorias
- Radio de esquina: 0-3mm para bordes redondeados
- Grosor de línea: 0.05-0.5mm
- Margen con base: 5-50mm
- Borde de base: 0-5 celdas
- Colores láser personalizables: Corte, grabado y raster
- Texto dedicatoria: Graba mensajes en la base
- Fuentes del sistema: Arial, Times New Roman, Courier, Georgia, Comic Sans y más
- Tamaño de texto: 2-20mm
- Alineación: Izquierda, centro o derecha
- Posicionamiento preciso: Ajuste horizontal y vertical en 0.5mm
- Zoom: 50-300%
- Colores opcionales: Visualiza las piezas con colores
- Modo piezas/dedicatoria: Alterna entre ver el puzzle completo o solo la base
- Detalles técnicos: Dimensiones exactas y distribución por tamaño
- Next.js 16 - Framework React con App Router y Turbopack
- React 19 - Biblioteca de interfaz de usuario
- TypeScript - Tipado estático
- Tailwind CSS 4 - Estilos utilitarios
- Radix UI - Componentes de UI accesibles
- Lucide React - Iconos
# Clonar el repositorio
git clone https://github.com/eguiluz/polyomino-puzzle-generator.git
# Navegar al directorio
cd polyomino-puzzle-generator
# Instalar dependencias
npm install
# Iniciar servidor de desarrollo
npm run devAbre http://localhost:3000 en tu navegador.
# Desarrollo
npm run dev
# Build de producción
npm run build
# Iniciar servidor de producción
npm start
# Linting
npm run lintpolyomino-puzzle-generator/
├── app/ # Next.js App Router
│ ├── globals.css # Estilos globales
│ ├── layout.tsx # Layout principal
│ └── page.tsx # Página principal
├── components/ # Componentes React
│ ├── ui/ # Componentes UI reutilizables
│ ├── CollapsibleCard.tsx # Tarjeta colapsable
│ ├── PuzzlePreview.tsx # Vista previa del puzzle
│ └── polyomino-generator.tsx # Componente principal
├── constants/ # Constantes de la aplicación
│ ├── emojis.ts # Librería de emojis kawaii
│ └── fonts.ts # Fuentes del sistema
├── hooks/ # Custom React Hooks
│ ├── usePolyominoState.ts # Estado del generador
│ └── usePuzzlePieces.ts # Generación de piezas
├── lib/ # Utilidades y lógica de negocio
│ ├── base-shapes.ts # Cálculos geométricos
│ ├── polyomino.tsx # Algoritmo de generación
│ ├── svg-download.ts # Exportación SVG
│ ├── text-parser.ts # Parser de texto/emojis
│ └── utils.ts # Utilidades generales
├── types/ # Definiciones TypeScript
│ └── components.ts # Interfaces de componentes
└── public/ # Archivos estáticos
-
Configura los parámetros del puzzle
- Selecciona la forma base (rectángulo, hexágono o círculo)
- Define el tamaño del grid
- Ajusta el tamaño mínimo y máximo de las piezas
-
Personaliza las piezas
- Activa el modo intrincado para piezas entrelazadas
- Ajusta serpenteo y complejidad
-
Añade contenido
- Escribe texto personalizado o selecciona emojis kawaii
- Configura texturas para grabado láser
- Personaliza la dedicatoria en la base
-
Ajusta parámetros láser
- Define tamaño de celda según tu material
- Configura radio de esquina y grosor de línea
- Ajusta los colores para corte, grabado y raster
-
Descarga el SVG
- Previsualiza con zoom ajustable
- Descarga el archivo SVG optimizado para láser
- El archivo incluye capas separadas por tipo de operación
El generador utiliza un algoritmo de crecimiento aleatorio que:
- Divide el grid en una cuadrícula base
- Crea "semillas" aleatorias que crecen célula a célula
- Respeta límites de tamaño min/max configurados
- Aplica transformaciones según serpenteo y complejidad
- Genera paths SVG optimizados con esquinas redondeadas
- Añade clip paths para texturas por pieza
- Renderiza texto/emojis con posicionamiento inteligente
- Generación determinista: Usa semillas para reproducibilidad
- Optimización de paths: Merge de celdas adyacentes en paths únicos
- Clip paths por pieza: Texturas contenidas dentro de cada forma
- Texto inteligente: Detecta emojis multi-carácter y ajusta espaciado
- Responsive: Interfaz adaptable a diferentes tamaños de pantalla
- Type-safe: 100% TypeScript con tipos estrictos
El SVG exportado incluye:
- Capa de corte (color configurable): Contornos de piezas y base
- Capa de grabado (color configurable): Texturas vectoriales
- Capa de raster (color configurable): Texto y emojis
Las máquinas láser interpretan estos colores para aplicar diferentes potencias y velocidades.
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT.
GitHub Copilot - Agente de IA de programación
Creado con ❤️ para makers y entusiastas del corte láser.
¿Te gusta el proyecto? ¡Dale una ⭐ en GitHub!