El Piedrero (v1.0.1)
¿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.
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 y escuchar la locución folclórica original, 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.1)
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 (8.2 MB)
Ofuscación R8, reducción de peso del 40%, credenciales por variables de entorno y verificación criptográfica SHA-256.
Prioridad Sonora & Folklore
Cola de audio blindada sin cancelaciones entre ¡Buenas! y ¡Últimas!, streaming Zero-Disk-IO 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 1.0 / 1.0.1 (Estable) 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 y accesibilidad (v1.0.1):
- 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.
- Control de Reparto & Sincronización: Diálogo y recuento de 4 cartas iniciales («Cartas a la Mesa») exclusivo para el jugador repartidor en partidas multijugador, evitando confusiones en los terminales de los compañeros.
- Modo TV Cast: Transmisión de pantalla en tiempo real a Smart TVs y proyectores (
TvCastDialog) para torneos y tabernas. - Banda Sonora IA & Prioridad Sonora: 6 temas instrumentales folclóricos canarios generados por IA libres de SGAE (CC0), streaming Zero-Disk-IO y cola de audio blindada sin cancelaciones entre los avisos de ¡Buenas! y ¡Últimas!.
- Accesibilidad Universal (WCAG 2.1 AA/AAA): Touch targets de 48×48 dp, selector dinámico de tamaño de fuente en ajustes (Normal, Grande +12%, Extra +25%) con persistencia local, contrastes reforzados >10:1 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), servicioAppCleanupServicey recuento estricto de 40 cartas. - DevSecOps & Distribución: Compilación optimizada con R8 (8.2 MB), firma Release oficial (MIUI/HyperOS), verificación criptográfica SHA-256 y descarga directa del binario
El_Piedrero_v1.0.1.apkcon historial en GitHub Releases.
Versión 1.1: Refactorización Visual & UX En Planificación
Actualización enfocada en optimizar y pulir la interfaz gráfica del marcador: animaciones más fluidas en la transición de piedras malas a buenas, mejoras de accesibilidad táctil para personas mayores, microinteracciones hápticas avanzadas y personalización de temas y avatares de equipo.
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.