Arquitectura

Enfoque

  • Clean Architecture pragmatica con separacion app / domain / data.
  • UDF en presentacion: StateFlow + eventos hacia ViewModel.
  • Casos de uso centrados en:
    • validacion de setup,
    • seleccion de palabra,
    • asignacion de roles,
    • transicion de estado de revelado.

Capas

  • domain: reglas puras y contratos.
  • data: implementacion offline con DataStore + JSON local.
  • app: UI Compose, navegacion, tema, strings, estado de sesion.

Estado de partida

  • GameViewModel mantiene:
    • configuracion actual,
    • ronda activa,
    • estado de revelado (PassingPhone, RevealingSecret, RoundReady),
    • mensajes de error,
    • ganador seleccionado.

Persistencia

  • DataStorePreferencesRepository
    • ajustes globales,
    • ultima configuracion,
    • lista de palabras recientes.
  • DataStoreStatsRepository
    • historial de rondas,
    • estadisticas agregadas.

Seguridad

  • En rutas sensibles (Reveal, Result) se puede activar FLAG_SECURE desde ajustes.