{"id":49390033,"url":"https://github.com/efedeveloper/sopaletras","last_synced_at":"2026-04-28T12:06:05.459Z","repository":{"id":174522160,"uuid":"307507898","full_name":"EfeDeveloper/sopaLetras","owner":"EfeDeveloper","description":"Sopa de letras básica con plugin wordfind","archived":false,"fork":false,"pushed_at":"2026-03-03T01:58:47.000Z","size":1166,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-03T03:49:44.371Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EfeDeveloper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-10-26T21:23:24.000Z","updated_at":"2026-03-03T01:58:52.000Z","dependencies_parsed_at":"2023-07-17T01:00:47.220Z","dependency_job_id":null,"html_url":"https://github.com/EfeDeveloper/sopaLetras","commit_stats":null,"previous_names":["efedeveloper/sopaletras"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EfeDeveloper/sopaLetras","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EfeDeveloper%2FsopaLetras","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EfeDeveloper%2FsopaLetras/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EfeDeveloper%2FsopaLetras/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EfeDeveloper%2FsopaLetras/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EfeDeveloper","download_url":"https://codeload.github.com/EfeDeveloper/sopaLetras/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EfeDeveloper%2FsopaLetras/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32379676,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T11:25:28.583Z","status":"ssl_error","status_checked_at":"2026-04-28T11:25:05.435Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-28T12:05:43.738Z","updated_at":"2026-04-28T12:06:05.452Z","avatar_url":"https://github.com/EfeDeveloper.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎮 Sopa de Letras 2.0\n\nJuego moderno de sopa de letras (word search) con interfaz renovada, múltiples niveles de dificultad y sistema de puntuación.\n\n\u003e **Versión 2.0** - Completamente reescrito con Tailwind CSS y Vanilla JavaScript (sin jQuery/Bootstrap)\n\n## ✨ Características\n\n### 🎯 Funcionalidades Principales\n- **Palabras Aleatorias**: Obtención dinámica de palabras desde API externa con fallback local\n- **3 Niveles de Dificultad**: \n  - Fácil: 3-6 letras (grilla 12x12, 14 palabras)\n  - Medio: 6-9 letras (grilla 15x15, 14 palabras)\n  - Difícil: 9-12 letras (grilla 17x17, 14 palabras)\n- **Sistema de Puntuación**: Basado en tiempo, dificultad, palabras encontradas y penalizaciones\n- **Sistema de Pistas**: Revelación gradual de letras (penalización: -50 pts)\n- **Modo Resolver**: Completa el puzzle automáticamente (penalización: -500 pts)\n- **Cronómetro**: Seguimiento de tiempo en cada partida\n- **Modo Oscuro**: Toggle entre tema claro y oscuro con persistencia\n- **Historial de Partidas**: Almacenamiento local de estadísticas y mejores puntajes\n- **Responsive Design**: Optimizado para desktop, tablet y móviles\n\n### 🎨 Interfaz\n- Diseño moderno con **Tailwind CSS 3.4**\n- Animaciones suaves y transiciones fluidas\n- Soporte para touch gestures en dispositivos móviles\n- Modal de completado con estadísticas detalladas\n- Feedback visual al encontrar palabras\n\n### 🏗️ Arquitectura\n- **Vanilla JavaScript (ES6 Modules)**: Sin dependencias de jQuery o Bootstrap\n- **Modular**: Código organizado en módulos independientes\n- **Mantenible**: Separación clara de concerns (UI, lógica, datos)\n\n## 📁 Estructura del Proyecto\n\n```\nsopaLetras/\n├── src/\n│   ├── js/\n│   │   ├── app.js              # Aplicación principal y orquestador\n│   │   ├── WordAPI.js          # Gestión de palabras (API + fallback)\n│   │   ├── WordFindGame.js     # Motor del juego (Vanilla JS)\n│   │   ├── PuzzleGenerator.js  # Motor propio de generación de puzzles\n│   │   ├── Timer.js            # Sistema de cronómetro\n│   │   ├── ScoreSystem.js      # Sistema de puntuación y rating\n│   │   ├── Storage.js          # LocalStorage para historial\n│   │   └── DarkMode.js         # Modo oscuro con persistencia\n│   ├── data/\n│   │   └── words.json          # Palabras de fallback (general, naturaleza, tecnología)\n│   └── input.css               # Estilos base de Tailwind\n├── public/\n│   ├── game.html               # Página del juego\n│   └── output.css              # CSS compilado de Tailwind\n├── image/\n│   └── Browser.ico             # Favicon\n├── index.html                  # Página de inicio\n├── package.json                # Dependencias y scripts\n├── tailwind.config.js          # Configuración de Tailwind\n└── README.md                   # Este archivo\n```\n\n## 🚀 Instalación y Uso\n\n### Pre-requisitos 📋\n- Node.js (v14 o superior)\n- npm (v6 o superior)\n- Navegador web moderno\n\n### Instalación 🔧\n\n1. Clonar o descargar el repositorio\n2. Instalar dependencias:\n```bash\nnpm install\n```\n\n3. Compilar Tailwind CSS:\n```bash\nnpm run build\n```\n\n### Desarrollo\n\nPara desarrollo con recarga automática de estilos:\n```bash\nnpm run dev\n```\n\n### Uso\n\nSimplemente abre `index.html` en tu navegador web favorito.\n\n## 🎮 Cómo Jugar\n\n1. **Inicia el Juego**:\n   - Selecciona el nivel de dificultad (Fácil, Medio o Difícil)\n   - Haz clic en \"🎮 Nuevo Juego\"\n   - Se generará una sopa de letras con 14 palabras aleatorias\n\n2. **Busca las Palabras**:\n   - Selecciona las letras con el mouse o dedo en dispositivos táctiles\n   - Las palabras pueden estar en 8 direcciones: horizontal, vertical o diagonal\n   - Pueden leerse de izquierda a derecha o al revés\n\n3. **Usa las Ayudas** (opcional):\n   - **💡 Pista**: Revela 2 letras de una palabra (-50 pts)\n   - **🔍 Resolver**: Completa automáticamente el puzzle (-500 pts)\n\n4. **Completa el Puzzle**:\n   - Encuentra todas las 14 palabras de la lista\n   - Observa tu tiempo y puntaje en tiempo real\n   - Al completar, verás tus estadísticas finales y rating de estrellas\n\n## 🔧 Tecnologías\n\n### Construido con 🛠️\n- **HTML5**: Estructura semántica\n- **Tailwind CSS 3.4**: Framework de utilidades CSS\n- **JavaScript ES6+**: Módulos, clases, async/await\n- **Font: Poppins**: Tipografía moderna de Google Fonts\n\n### APIs Externas (con Fallback)\n- Random Word API: `https://random-word-api.herokuapp.com`\n- Fallback: Archivo JSON local con 100+ palabras\n\n### Almacenamiento\n- **LocalStorage**: Configuraciones y historial\n- **SessionStorage**: Caché temporal de palabras de API\n\n## 📊 Sistema de Puntuación\n\n### Cálculo de Puntaje\n- **Puntos por Palabra**: `longitud × 10 × multiplicador_dificultad`\n- **Puntos Base**: `palabras_encontradas × 100 × multiplicador_dificultad`\n- **Bonus de Tiempo**: Hasta 500 puntos (objetivo: \u003c 3 minutos)\n- **Multiplicadores**:\n  - Fácil: x1.0\n  - Medio: x1.5\n  - Difícil: x2.0\n- **Penalizaciones**:\n  - Usar \"Pista\": -50 puntos por cada uso\n  - Usar \"Resolver\": -500 puntos\n\n### Calificación\n- ⭐⭐⭐⭐⭐ (5 estrellas): 100% sin ayuda\n- ⭐⭐⭐⭐ (4 estrellas): 100% con ayuda\n- ⭐⭐⭐ (3 estrellas): 80-99%\n- ⭐⭐ (2 estrellas): 60-79%\n- ⭐ (1 estrella): 40-59%\n\n## 🎨 Personalización\n\n### Colores del Tema\nEdita `tailwind.config.js`:\n```javascript\ncolors: {\n  'puzzle-primary': '#8c0a35',      // Color principal\n  'puzzle-completed': '#1e90ff',    // Puzzle completado\n  'puzzle-found': '#ff9f43',        // Palabra encontrada\n  'puzzle-selected': '#04cdff',     // Selección actual\n  'puzzle-solved': '#2ed573',       // Resuelto con ayuda\n}\n```\n\n## 🐛 Resolución de Problemas\n\n### El juego no carga\n- Verifica que hayas compilado Tailwind: `npm run build`\n- Asegúrate de que `public/output.css` existe\n- Abre la consola del navegador para ver errores\n\n### Las palabras no se cargan\n- Verifica tu conexión a internet (para las APIs)\n- El fallback local debería funcionar automáticamente\n- Verifica que `src/data/words.json` existe\n\n### Los estilos no se aplican\n- Recompila Tailwind: `npm run build`\n- Limpia el caché del navegador\n\n## 📝 Cambios de la Versión 2.0\n\n### Removido ❌\n- Dependencias jQuery y Bootstrap (no necesarias)\n- CSS custom (~300 líneas → reemplazadas con Tailwind)\n- Motor de puzzles de terceros → ahora usa PuzzleGenerator.js propio\n\n### Agregado ✅\n- **PuzzleGenerator.js**: Motor propio de generación de puzzles (más confiable y moderno)\n- Tailwind CSS 3.4 con diseño mejorado\n- Grilla con efectos visuales modernos (gradientes, sombras, animaciones)\n- Sistema de palabras aleatorias con API\n- Modo oscuro con persistencia\n- Timer y sistema de puntuación\n- 3 niveles de dificultad con grillas adaptativas\n- Sistema de pistas y resolución automática\n- LocalStorage para historial\n- Soporte touch para móviles\n- Arquitectura modular ES6\n\n### Mejorado 🔄\n- **Grilla del puzzle**: Diseño más atractivo con efectos hover, sombras y gradientes\n- **Responsividad**: Mejor adaptación a todos los tamaños de pantalla\n- **Selección de palabras**: Algoritmo mejorado sin límites artificiales\n- Interfaz completamente rediseñada\n- Rendimiento optimizado\n- Accesibilidad mejorada\n- Código más mantenible\n\n## 🤝 Contribuyendo\n\nLas contribuciones son bienvenidas. Por favor:\n\n1. Haz fork del proyecto\n2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`)\n3. Commit tus cambios (`git commit -m 'Add some AmazingFeature'`)\n4. Push a la rama (`git push origin feature/AmazingFeature`)\n5. Abre un Pull Request\n\n## 📌 Versionado\n\n- **v1.0**: Versión original con jQuery y Bootstrap\n- **v2.0**: Reescritura completa con Tailwind CSS y Vanilla JS\n\n## ✒️ Autores\n\n- **Edwin Ferney Villa Taborda** - _Trabajo Inicial_ - [EfeDeveloper](https://github.com/EfeDeveloper)\n- **Versión 2.0** - Modernización y reescritura completa (2026)\n\nTambién puedes mirar la lista de todos los [contribuyentes](https://github.com/EfeDeveloper/sopaLetras/contributors) quíenes han participado en este proyecto.\n\n## 📄 Licencia\n\nEste proyecto está bajo la Licencia MIT - mira el archivo [LICENSE](LICENSE) para detalles\n\n## 🙏 Expresiones de Gratitud\n\n- **Random Word API**: Por proporcionar palabras aleatorias en español\n- **Tailwind CSS**: Por el increíble framework de utilidades\n- A toda la comunidad de desarrolladores que hace proyectos como este posibles\n\n---\n\nDesarrollado con ❤️ - Versión 2.0 (2026)\n\n\n- Comenta a otros sobre este proyecto 📢\n- Invita una cerveza 🍺 o un café ☕ a alguien del equipo.\n- Da las gracias públicamente 🤓.\n- etc.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fefedeveloper%2Fsopaletras","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fefedeveloper%2Fsopaletras","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fefedeveloper%2Fsopaletras/lists"}