El Piedrero (v1.1-Beta.2)
¿De dónde sale el nombre «El Piedrero»?
El nombre proviene de la jerga tradicional de la Ronda: en la mesa, los puntos no se anotan en papel, sino que se contabilizan apilando piedras físicas (o judías). Al encargado oficial de custodiar el tanteo, sumar las malas, pasar a buenas y cantar la victoria se le llama coloquialmente el piedrero. La app nace para actuar como ese «piedrero digital» de apoyo.
Capturas de Pantalla v1.1-Beta.2
Explora las pantallas reales de la futura versión v1.1-Beta.2 de El Piedrero. Diseñada en Android con Material 3, arquitectura reactiva MVI y soporte multijugador local mediante Sockets TCP.
Pantalla Principal
Vista Previa: ¿Cómo se juega con El Piedrero?
Experimenta en tiempo real la interfaz reactiva desarrollada en Jetpack Compose (Material 3): selecciona para qué equipo cantar, pulsa sobre cualquiera de las jugadas tradicionales para sumar piedras, o simula el paso a ¡Buenas! y la victoria al alcanzar las 21 piedras.
Arquitectura del Sistema: MVI Reactivo & Red Sockets TCP Offline
Estructura desacoplada bajo Clean Architecture combinando interfaz declarativa reactiva con un protocolo de comunicación en red local de baja latencia:
Jetpack Compose Material 3
Touch targets estrictos de 48×48 dp, contrastes >10:1 para visión solar, soporte TalkBack y bloqueo vertical.
Sockets TCP & AES-256-GCM
Contador monotónico contra reinyección, expiración <60s, resiliencia P2P ante microcortes y emparejamiento por QR.
Zero-Disk-IO & Ducking
Gestión nativa de AudioFocus con atenuación suave, música folclórica CC0, purga de caché y búferes a 60 FPS.
R8 (8.2 MB) & GitHub Actions
Variables de entorno seguras, ofuscación R8, HostGameUseCaseTest, lintVitalRelease y firma Release oficial.
Situación
Todas las tardes dedico horas a compartir partidas de la tradicional Ronda con mi abuelo. Durante la intensidad de las rondas, los cantos simultáneos y los lances del juego, con frecuencia surgían confusiones en el recuento exacto de piedras y judías sobre la mesa. Existía la necesidad de disponer de una herramienta tecnológica de consulta inmediata que actuase como soporte y juez secundario, sin alterar en ningún momento la valiosa tradición física de jugar con las piezas reales.
Tarea
El desafío planteado fue bidireccional y de alta exigencia:
1. Usabilidad y Sincronización Offline: Diseñar una aplicación móvil Android nativa, completamente accesible para personas mayores, 100% offline (sin dependencia de cobertura móvil ni servidores externos) y capaz de sincronizar el marcador en tiempo real entre múltiples dispositivos alrededor del tablero.
2. Eficiencia de Ingeniería Asistida por IA: Demostrar cómo, empleando herramientas de Inteligencia Artificial guiadas por un riguroso criterio de arquitectura de software, es viable concebir, programar, blindar y empaquetar un MVP v1.0 plenamente operativo en menos de 24 horas, sentando bases sólidas para su evolución continua.
Acción
Para materializar el proyecto bajo estándares profesionales de ingeniería de software, desarrollé los siguientes módulos técnicos:
1. Arquitectura Limpia & Accesibilidad Universal (WCAG 2.1 AA/AAA): Construcción nativa en Kotlin y Jetpack Compose (Material 3) bajo patrones Clean Architecture y MVI/MVVM reactivo con StateFlow. Todos los controles interactivos están normalizados a un mínimo estricto de 48×48 dp, con ratios de contraste superiores a 10:1 para visibilidad solar y descripciones TalkBack en español.
2. Sincronización Local, Cifrado AES-256-GCM & Anti-Replay: Servidor/cliente ligero sobre Sockets TCP en red de área local con cifrado simétrico extremo a extremo. Incorpora protección anti-replay con contadores monotónicos de secuencia (sequenceNumber), ventana de expiración temporal (<60s) y resiliencia P2P para recuperar asientos tras microcortes de red.
3. Audio Focus, Zero-Disk-IO y Música Tradicional CC0: Streaming directo de descriptores de assets sin copias a disco flash, integración de AudioFocusRequest con ducking automático para atenuar música ambiental y sustitución de piezas sonoras por composiciones folclóricas canarias de dominio público debidamente atribuidas.
4. Blindaje DevSecOps & Reducción R8 (8.2 MB): Eliminación de credenciales hardcodeadas en gradle gestionándolas por variables de entorno en CI/CD. Activación de optimización y ofuscación R8 (reducción de tamaño a 8.2 MB) con políticas de red sin tráfico en claro y parada limpia en ViewModel.onCleared().
5. Reglas Tradicionales, Transparencia Legal & Diálogos In-App: Soporte dinámico para partidas de 2, 3 y 4 jugadores (con regla de suplente temporal en tríos), historial rotativo persistente de 30 partidas y diálogos in-app de Licencias Open Source y Política de Privacidad 100% offline (cero recolección de telemetría).
6. Calidad de Software & Pipeline CI/CD: Baterías de pruebas unitarias sobre reglas y casos de uso (HostGameUseCaseTest.kt, RondaCipherTest.kt), con análisis lintVitalRelease y compilación automatizada de APK y Android App Bundle (AAB) en GitHub Actions.
Resultado
• Entrega Récord en <24 Horas: Concepción, desarrollo, testeo y empaquetado del MVP v1.0 completados en una única jornada gracias a la supervisión estratégica de herramientas de IA aplicada con rigor ingenieril.
• Impacto Real Inmediato: La aplicación es utilizada a diario en las partidas de las tardes con mi abuelo como juez de apoyo infalible, eliminando discusiones sobre el recuento de piedras malas y buenas y preservando intacta la diversión del juego presencial.
• Publicación Open Source & Binario Release Oficial: Código fuente liberado abiertamente en GitHub bajo Licencia MIT, con binario APK compilado en modo Release oficial firmado con certificado propio de DevNaranjo (compatibilidad universal garantizada en Xiaomi, MIUI y HyperOS), documentación bilingüe (ES/EN) y directrices de contribución comunitaria.
⚡ Aspectos Destacados de Ingeniería Móvil (v1.0.3 Estable · v1.1-Beta.2)
AES-256 & Anti-Replay
Criptografía simétrica E2E por QR, contador de secuencia contra ataques de reinyección y candado 🔒 de equipo rival en red.
WCAG 2.1 AA / AAA & Fuentes
Selector de tamaño de texto dinámico (Normal, Grande +12%, Extra +25%), touch targets ≥48×48 dp y contrastes >10:1.
DevSecOps & R8 (22.9 MB)
Ofuscación R8, suite BGM folclórica, credenciales seguras y verificación criptográfica SHA-256 del APK oficial.
Streaming Kernel & Folklore
Reproductor blindado anti-crash, lectura por FileDescriptor con búfer 2-4s (TV Cast) y música canaria CC0.
🗺️ Estado y Hoja de Ruta del Proyecto
Planificación de versiones y evolución multiplataforma para El Piedrero.
Fase MVP: Prototipo Funcional Inicial Completada
Concepción y desarrollo del primer prototipo funcional en ~24 horas asistido por IA el 01/09/2026. Estableció los cimientos del marcador nativo Android en Kotlin y Jetpack Compose (Material 3) bajo patrón reactivo MVI: soporte para mesa local (1 dispositivo), sincronización multijugador preliminar por Sockets TCP en red local con emparejamiento rápido mediante código QR (CameraX / ZXing), registro de cantos tradicionales con audios folclóricos y guardado local de las últimas 30 partidas.
Versión Oficial Estable (v1.0.0 → v1.0.3) Lanzamiento Oficial
Consolidación y endurecimiento de la aplicación a nivel de producción tras sucesivas iteraciones de optimización y parches de estabilidad sonora, streaming de baja latencia y sincronización multijugador (v1.0.3):
- Seguridad Criptográfica LAN: Cifrado de extremo a extremo AES-256-GCM en sockets TCP, validación autoritaria del Host, protección anti-replay y candado 🔒 estricto para bloquear la edición de piedras del equipo rival en red local.
- Sincronización Multijugador & Pantalla de Espera: Diálogo inicial de 4 cartas exclusivo para el repartidor, pantalla de espera interactiva en los terminales conectados durante el recuento con barra de progreso, descarte automático y recordatorio de reparto calibrable (30s por defecto, configurable de 15s a 90s o desactivable desde Accesibilidad).
- Bonificación de Bufos en Cantos: Botón contextual dinámico «De bufos» (+1 en Ronda/Parranda; +2 en Caracol/Caracolillo) con vigencia estricta durante el reparto en curso.
- Resiliencia Acústica & Audio Nativo: Erradicación total de cierres inesperados al finalizar pistas ambientales BGM mediante callbacks nativos del sistema atómicos y thread-safe (blindaje de llamadas a
MediaPlayer); streaming Zero-Disk-IO y cola de audio blindada sin cancelaciones entre los avisos de ¡Buenas! y ¡Últimas!. - Modo TV Cast & Streaming por Kernel Linux: Transmisión de pantalla en tiempo real (
TvCastDialog) con desacoplamiento de audio de la JVM medianteFileDescriptory búfer elástico de 2 a 4 segundos, previniendo microcortes por pausas del Garbage Collector o codificación de pantalla en Miracast y saturación enAudioFlingerde Smart TVs. - Accesibilidad Universal (WCAG 2.1 AA/AAA): Touch targets de 48×48 dp, selector dinámico de tamaño de fuente (Normal, Grande +12%, Extra +25%) con protección adaptativa en dos líneas y soporte TalkBack en español.
- Resiliencia & Botón Deshacer: Función para deshacer la última jugada directamente desde la ventana de victoria (restaurando tanteo, ganador e historial), gestión
singleTask, desvinculación limpia de cámara (unbindAll) y servicioAppCleanupService. - DevSecOps & Distribución: Compilación optimizada con R8 (22.9 MB con suite sonora completa), firma Release oficial (MIUI/HyperOS), verificación criptográfica SHA-256 (
CF5C09...) y descarga directa del binarioEl_Piedrero_v1.0.3.apkcon historial en GitHub Releases.
Versión 1.1: Refactorización Visual & UX (v1.1-Beta.2) En Desarrollo (Beta)
Actualización en fase activa de desarrollo y pruebas pre-lanzamiento que consolida la nueva experiencia visual y ergonómica de la aplicación:
- Selector de Modalidades Directo: Pantalla inicial intuitiva con acceso inmediato a Partida Local (un teléfono en el centro de la mesa) o Partida Multijugador (red local por Sockets TCP y código QR).
- Configuración Flexible de Mesa (2 a 8 Jugadores): Configuración interactiva de la mesa (1v1 mano a mano, 3 en trío, 4 en parejas 2x2, 6 en 3x2 u 8 en 4x2) y personalización completa de los nombres de los participantes.
- Asistente Táctil de Primer Reparto: Pantalla «Cartas a la Mesa» para contabilizar rápidamente cartas tradicionales repartidas (+1 a +4 piedras) e interruptor de validación reglamentaria «¿Bien dada?».
- Marcador Reactivo MVI: Rediseño visual del tanteo de Malas a Buenas (21 piedras) con transiciones suaves y botonera para los cantos folclóricos canarios.
- Trazabilidad y Botón Deshacer Inmediato: Registro cronológico detallado de jugadas con reversión instantánea de anotaciones involuntarias.
- Pantalla de Victoria y Head-to-Head: Modal de proclamación del ganador a las 10 Buenas (21 piedras) con marcador acumulado entre contrincantes.
- Tema Oscuro Integral (Material 3): Soporte de alto contraste especialmente calibrado para partidas nocturnas y máxima eficiencia energética en pantallas OLED/AMOLED.
- Distribución Anticipada del APK (v1.1-Beta.2): Acceso de prueba directa al binario compilado
El_Piedrero_v1.1-Beta.2.apkdisponible a través de GitHub Releases para testeo de nuevas características previo al lanzamiento general.
Futura Expansión: Compatibilidad para iOS Próximamente
Investigación y desarrollo para portar la aplicación al ecosistema de Apple mediante Compose Multiplatform o Kotlin Multiplatform (KMP), permitiendo que usuarios de iPhone y iPad puedan unirse a la misma mesa de juego en red local compartiendo la sincronización de piedras por Sockets TCP.