fiuba-ingsoft2-grupo8

🎶 Proyecto Melodía – Documentación Integral

Bienvenido al repositorio central de documentación del proyecto Melodía, desarrollado en el marco de la materia Ingeniería de Software II (FIUBA).

Aquí se encuentran recopilados los conceptos principales, la planificación, las decisiones de arquitectura y la organización general del desarrollo.

Cada repositorio complementario incluye documentación específica de su implementación, pero este espacio busca unificar la visión global del proyecto.

👉 Documentación del Proyecto

📖 Introducción

En este repositorio se encuentra toda la documentación integral relacionada al proyecto:

La idea principal es englobar los conceptos más grandes y dejar asentada una planificación tentativa sobre cómo se organizará el desarrollo del trabajo práctico.

🏗️ Arquitectura Global

Actualmente la arquitectura esta formada por los siguientes servicios:

♾️ CI/CD

CI/CD

Cada microservicio contará con un pipeline de CI/CD independiente para garantizar calidad, minimizar errores en producción y acelerar el ciclo de feedback.

🔄 Continuous Integration (CI)

El flujo de CI corre cada vez que se realiza un PR o un cambio en las ramas main y develop.

Infraestructura: Utilizamos GitHub Actions con runners hosteados por GitHub, proporcionando mayor velocidad y confiabilidad.

Pipeline de CI incluye:

Flujo específico por tecnología:

🚀 Continuous Deployment (CD)

El flujo de CD corre luego de realizar un merge o un push en la rama main.

Proceso automatizado en dos etapas:

  1. Build & Registry:
    • 📦 Construcción de imagen Docker optimizada (multi-stage builds).
    • ⬆️ Push automatizado a Docker Hub con versionado.
  2. Deployment:
    • 🔄 Pull de la nueva imagen desde el registro.
    • 🗑️ Eliminación controlada del contenedor anterior.
    • 🟢 Despliegue con zero-downtime usando health checks.
    • 🔐 Gestión segura de variables de entorno via GitHub Secrets.

Se utilizan secretos de Github para compartir variables de entorno.

♟️ Estrategias CI/CD por Componente

📊 Microservicios (Backend)

🖥️ Backoffice (Web)

📱 Aplicación Móvil (React Native + Expo)

🏗️ Infraestructura y Servicios

Nuestro ecosistema utiliza una infraestructura cloud:

🖥️ Compute & Hosting

Amazon EC2 - Instancias t3.micro

Características:

🗄️ Bases de Datos

Supabase - PostgreSQL

MongoDB Atlas - Hosteado en AWS

*Firebase

📦 Registry & Contenedores

Docker Hub

⚙️ Microservicios Planificados

Los siguientes microservicios componen el ecosistema del proyecto:

Cada uno de ellos está diseñado para ser autónomo, alineado con las mejores prácticas de desarrollo distribuido.

📚 Historias

La siguiente tabla presenta las historias de usuario organizadas por épicas, con su estado actual de desarrollo:

TODO WIP DONE FINISHED

Historias Obligatorias

# Historia Épica Estado
1 Registro de usuarios Usuarios DONE
2 Login con email y contraseña Usuarios DONE
3 Recupero de contraseña Usuarios DONE
4 Edición de perfil Perfil DONE
5 Visualización de perfil propio Perfil DONE
6 Centro + preferencias + disparadores esenciales Notificaciones TODO
7 Listar usuarios del sistema Adm. Usuarios DONE
8 Bloquear/Desbloquear usuario Adm. Usuarios DONE
9 Catálogo: Listar/buscar/filtrar Adm. Contenido TODO
10 Contenido: Detalle y trazabilidad Adm. Contenido TODO
11 Transiciones y estado efectivo Adm. Contenido TODO
12 Perfil del artista Artistas TODO
13 Discografía Artistas TODO
14 Popular (Top del artista) Artistas TODO
16 Gestión de perfil del artista Artistas TODO
17 Publicación de lanzamientos Artistas TODO
18 Búsqueda unificada por tipo Explorar TODO
19 Navegación a vistas de detalle Explorar TODO
20 Creación y gestión de playlists Biblioteca WIP
21 Reordenamiento en playlists Biblioteca TODO
22 Historial de reproducción Biblioteca WIP
23 Liked Songs Biblioteca WIP
24 Colecciones guardadas Biblioteca TODO
25 Reproducción y controles básicos Reproducción DONE
26 Controles avanzados del player Reproducción WIP
27 Gestión de cola Reproducción TODO
28 Toggle de Liked desde el player Reproducción WIP
29 Métricas de usuario (panel + export) Métricas TODO

Historias Opcionales

# Historia Épica Puntos Estado
1 Login con proveedor federado Usuarios 2 TODO
2 Ver perfil de otros usuarios Perfil 2 TODO
3 Deep links avanzados en notificaciones Notificaciones 5 TODO
4 Perfil detallado (admin) Adm. Usuarios 2 TODO
5 Disponibilidad por región/ventana (backoffice) Adm. Contenido 5 TODO
6 Bloqueo/desbloqueo con alcance Adm. Contenido 3 TODO
7 Métricas de canciones/álbumes Métricas 3 TODO
9 Colaboraciones / “Aparece en” Artistas 3 TODO
10 Disponibilidad por territorios/ventana (creators) Artistas 3 TODO
11 Autocompletar metadatos (Fast Complete) [IA] Artistas 5 TODO
12 Explorar Home (base) Explorar 3 TODO
13 “New release from {Artist}” Explorar 2 TODO
14 “Discover more from {Artist}” Explorar 2 TODO
15 Made For You (Discover/Daily Mix) Explorar 8 TODO
16 Mood Mixes asistidos [IA] Biblioteca 5 TODO
17 Videos musicales asociados Reproducción 3 TODO
18 Reproducción On-Demand (multidispositivo) Reproducción 5 TODO
19 Reproducción continua (autoplay sin cola) [IA] Reproducción 3 TODO
20 Seguir/Dejar de seguir usuarios Social 2 TODO
21 Feed de actividad de amigos (+ filtros) Social 3 TODO
22 Compartir canciones/playlists Social 2 TODO
23 Playlists temáticas por contexto Vibras 3 TODO
24 Radio por canción [IA] Vibras 3 TODO
25 Auto Play (nuevo contexto de 15 canciones) [IA] Vibras 3 TODO
26 Onboarding: géneros favoritos Onboarding 2 TODO
27 Onboarding: artistas favoritos Onboarding 2 TODO
28 Onboarding: preferencias de notificaciones Onboarding 1 TODO

Historias indefinidas

# Historia Épica Puntos Estado
1 Artistas relacionados (Similares a) Artistas ? TODO
2 Métricas de artista (panel + export) Métricas ? TODO

📂 Repositorios del Proyecto

📅 Cronograma Tentativo

El desarrollo se planificó en checkpoints con objetivos claros y medibles.
Este cronograma puede adaptarse según los resultados de cada sprint, pero sirve como guía de avance del proyecto.

🔹 Segundo Checkpoint (4 semanas)

Objetivos principales:

Épicas incluidas:

🔹 Tercer Checkpoint (3.5 semanas)

Objetivos principales:

Épicas incluidas:

🔹 Cuarto Checkpoint (3 semanas)

Objetivos principales:

📅 Cronograma Real

🔹 Primer Checkpoint (4 semanas)

Objetivos del Sprint

  1. En esta primera entrega se alcanzó la integración inicial entre el ‘Backend’, ‘Backoffice’ y la ‘Aplicación Mobile’.
  2. Se hizo el despliegue de todos los microservicios en la nube.
  3. Se generó todo el flujo de ‘CI/CD’ en ambos microservicios.
  4. Se inicializaron ambas bases de datos.
  5. Se definió la arquitectura a seguir.

Camila

  1. ✅ Armado de la estructura del endpoint. Database, Controller, Model, Schema.
  2. ✅ Desarrollo de endpoints de songs.
  3. ✅ Armado de las pruebas y debugging en local.
  4. ✅ Configuración del testing para deploy.
  5. ✅ Documentación sobre stack elegido.

Esteban

  1. ✅ Puesta en marcha del repositorio con Docker para local y remoto.
  2. ✅ Conexión con MongoDB desde content-api.
  3. ✅ Armado del deploy para produccion.
  4. ✅ Desarrollo de endpoints de playlist.
  5. ✅ Documentación integral de los repositorios del Backend.

Felipe

  1. ✅ Capacitación inicial en TypeScript, React, React Native y JavaScript.
  2. ✅ Reuniones de equipo para comprender en profundidad el enunciado.
  3. ✅ Definición de arquitectura → elección de Expo por sus ventajas en desarrollo móvil.
  4. ✅ Configuración de entorno local y emuladores Android.
  5. ✅ Desarrollo de las primeras pantallas y conexión con APIs (local y en la nube).

Joaquín

  1. ✅ Crear organización en Github.
  2. ✅ Levantar instancias en AWS EC2 para user-api, content-api y el backoffice.
  3. ✅ Levantar bases de datos en Supabase (PostgreSQL) y Atlas (MongoDB).
  4. ✅ Configurar estructura inicial (Dockerfile, Docker Compose, Makefile, etc) de user-api y content-api.
  5. ✅ Desarrollar endpoints básicos para la user-api.
  6. ✅ Configurar Github Runners.
  7. ✅ Configurar CI/CD para user-api y content-api.
  8. ✅ Documentar diagrama de arquitectura y CI/CD.

Martín

  1. ✅ Creación del repositorio con un Backoffice muy básico.
  2. ✅ Levantar el backoffice con un compose que funcionaba para hacer pruebas de manera local.
  3. ✅ Levantar el backoffice con el compose-remote que se conectaba con la base de datos y le pegaba a los Endpoints de la API del usuario.
  4. ✅ Emprolijar un poco el frontend (botoón y título).
  5. ✅ Creacion de un archivo CI que corre un Linter al pushear.
  6. ✅ Creación del archivo CD para que al pushear o realizar un pr a main se haga el Deploy a AWS.
  7. ✅ Documentar bien el Readme, explicando como se levanta el backoffice y justificaciones del stack elegido.

🔹 Segundo Checkpoint (4 semanas)

Objetivos del Sprint

  1. Creación de todos los microservicios restantes.
  2. Realizó el despliegue de las métricas.
  3. Integró la funcionalidad de gestión y reproducción canciones en la ‘Aplicación Mobile’ y el ‘Backoffice’.
  4. Implementaron las funcionalidades de administración de usuarios y contenido en el ‘Backoffice’.
  5. Redefinición del scope de las entidades.
  6. Añadido del sistema de autenticación.
  7. Conexión de ‘Firebase’ y ‘Datadog’ con el resto del sistema.

Camila

  1. ✅ Bocetos del ‘Home’.
  2. ✅ Backend de la Biblioteca.
  3. ✅ Lógica de gestión de imágenes.
  4. ✅ Refactorización de la funcionalidad de la Playlists.
  5. ✅ Integración de la ‘Content API’ con la ‘Player API’ desde el lado de la ‘Content API’.

Esteban

  1. ✅ Integración de la ‘Content API’ con la ‘Player API’ desde el lado de la ‘Player API’.
  2. ✅ Desarrollo de la ‘Player API’.
  3. ✅ Gestión de las canciones.
  4. ✅ Relevamiento de los criterios de aceptación para las distintas funcionalidades.
  5. ✅ Redefinición del scope del Sprint.

Felipe

  1. ✅ Estrucutra inicial de la ‘Chat API’.
  2. ✅ Estructura inicial de la ‘Notification API’.
  3. ✅ Creación de ‘Supabase’ e ‘Firebase’.
  4. ✅ Desarrollo de las vistas del ‘Home’ y los ‘Perfiles’.
  5. ✅ Integración de las nuevas ‘APIs’ con la ‘Aplicación Mobile’.
  6. ✅ Integración del sistema de autenticación en la ‘Aplicación Mobile’.

Joaquín

  1. ✅ CI/CD de la ‘Chat API’.
  2. ✅ CI/CD de la ‘Notification API’.
  3. ✅ CI/CD de la ‘Player API’.
  4. ✅ Implementación de API Gateway.
  5. ✅ Despliegue de las métricas y logs en Datadog de todos los servicios.
  6. ✅ Implementación de token de autorización.
  7. ✅ Reseteo de contraseña con código por mail.
  8. ✅ Implementación de la gestión de perfiles.

Martín

  1. ✅ Implementación de la administración de usuarios.
  2. ✅ Implementación de la administración de contenido.
  3. ✅ Integración del sistema de autenticación en el ‘Backoffice’.
  4. ✅ Diseño ‘UX/UI’ de la interfaz del ‘Backoffice’.
  5. ✅ Testing integral del funcionamiento de las ‘APIs’.

🏆 Conclusión

Este repositorio refleja la visión global del proyecto Melodía, alineado con las mejores prácticas de ingeniería de software, con foco en:

El objetivo final es entregar un producto robusto, bien documentado y de calidad profesional, listo para ser evaluado y utilizado.