Volver a proyectos

Music
Link

Conectamos músicos, bandas, salas de conciertos y fans en una sola plataforma diseñada para que la escena musical local crezca.

AndroidJetpack ComposeKotlinFirebase

Stack tecnológico

2.1.0

Kotlin

100% Kotlin, sin Java. Lenguaje moderno, conciso y type-safe en toda la base de código.

Material 3

Jetpack Compose

UI declarativa, reactiva y completamente nativa. Sin XML.

2.54

Dagger Hilt

17 módulos de inyección de dependencias.

Async

Coroutines & Flow

StateFlow, SharedFlow y callbackFlow para tiempo real.

Backend

Firebase

Auth, Firestore, Storage, Analytics y Crashlytics integrados de forma desacoplada vía interfaces.

Type-Safe

Navigation Compose

Rutas tipadas con @Serializable y deep links desde push notifications.

Arquitectura: MVVM + Clean

Tres capas con responsabilidades estrictamente separadas. La UI Layer solo pinta estados y lanza eventos. La Domain Layer define modelos, interfaces de repositorio y use cases. La Data Layer implementa los repositorios contra Firebase, encapsulando todos los detalles del SDK detrás de tipos limpios (`Result<T>`, `Flow<T>`).

  1. CapaUI

    Compose Screens + ViewModels

    Pantallas declarativas y ViewModels @HiltViewModel con StateFlow<UiState> y patrón sealed class.

  2. CapaDomain

    Modelos, interfaces, use cases

    Contratos puros sin dependencia de Firebase. 16 repository interfaces, 10 use cases.

  3. CapaData

    Repository Implementations

    try/catch → Result<T>, callbackFlow para snapshot listeners, batches atómicos en Firestore.

  • 33ViewModels
  • 16Repositorios
  • 17Módulos Hilt
  • 19Modelos de dominio

Roles jerárquicos

Bandas y salas comparten un sistema de tres roles que define qué puede hacer cada miembro del equipo. Los permisos se materializan tanto en la UI como en las Security Rules de Firestore.

Admin

Estructura · Contenido · Miembros · Eliminar org.

Control total. El fundador de la banda o el dueño de la sala.

Ayudante

Contenido · Editar info · Posts · Eventos.

No gestiona miembros ni borra la entidad. Manager o técnico de sonido.

Integrante

Lectura · Chat interno.

Aparece en el staff y accede al chat. Sin permisos de edición.

Seguridad en tres capas

La defensa se aplica antes de tocar la base de datos. Las reglas verifican identidad, autoría y campos estructurales protegidos en cada operación. Auto-promoción a admin, suplantación de identidad y escalada de privilegios quedan bloqueadas a nivel de Firestore.

  1. 01

    Firebase Auth

    Todo acceso requiere un JWT válido. El uid del token es la identidad base de toda regla.

  2. 02

    Security Rules

    Denegación total por defecto. Verificación de autoría e identidad en cada escritura. Campos estructurales protegidos.

  3. 03

    Cloud Functions

    Operaciones privilegiadas con Admin SDK fuera del alcance de las reglas: aprobaciones, soft-delete diferido, isPremium.

Caso de estudio

Una arquitectura pensada para crecer sin romperse.

Volver a proyectos