deivid.space
Tema claro activo.

Caso de estudio

Proyecto independiente

← Todos los proyectos

Canta

PWA para equipos musicales con acordes ChordPro, audio de instrumentos, setlists y rotación de repertorio sobre Next.js, Go y MySQL.

Rol
Full Stack Developer
Estado
Disponible
Caso
Completo

Stack

  • Next.js
  • TypeScript
  • Go
  • HTML
  • CSS
  • Tailwind CSS
  • MySQL
  • Docker
  • Railway
  • Vercel

Qué es y qué resolvió

Canta permite a equipos musicales administrar canciones, acordes, repertorios y la planificación de sus servicios. Renderiza acordes en notación ChordPro con diagramas interactivos, reproduce audio de instrumentos, extrae la paleta de colores de las portadas desde Spotify y funciona como PWA instalable con soporte offline.

La información de programación ya existía dentro de los setlists, así que la solución debía reutilizarla sin incorporar tablas ni endpoints que solo duplicaran datos, y debía respetar el aislamiento por organización y los registros eliminados lógicamente. El resultado que hoy se puede describir es una rotación visible que apoya la programación de canciones sin depender solo de memoria o planillas manuales.

Qué construí

Implementé la rotación de 90 días con métricas de frecuencia, recordatorios y próxima fecha planificada. También construí un calendario conectado con los setlists: una grilla mensual en escritorio y una agenda adaptada a móvil.

La decisión documentada fue derivar la rotación desde los setlists existentes en vez de agregar tablas o endpoints redundantes. No hay evidencia publicada que respalde otras alternativas evaluadas, por lo que no se atribuyen comparaciones ni decisiones adicionales.

Cómo está hecho

El frontend usa Next.js con React, TypeScript, Tailwind y Radix UI; el backend en Go expone la API sobre MySQL con GORM y autenticación JWT. El conteo de rotación considera cada setlist una sola vez aunque una canción se repita dentro de él, y respeta el aislamiento por organización y el borrado lógico. Un diagrama sanitizado de esta relación queda pendiente porque no existe uno autorizado para publicar.

La funcionalidad se verificó con pruebas de frontend y backend, build de producción y despliegues en Railway y Vercel. El repositorio backend incluye empaquetado Docker (Dockerfile y docker-compose) e higiene de secretos con gitleaks y vault. No hay pipeline de CI publicado en los repositorios ni evidencia de observabilidad, por lo que no se atribuye madurez adicional.

Qué se puede verificar

La evidencia disponible respalda el cálculo de rotación y el conteo sin duplicados, junto con las pruebas, el build y los despliegues descritos. También las capacidades verificables en el código: PWA instalable con soporte offline basado en Workbox, renderizado ChordPro con audio de instrumentos vía soundfonts y autenticación JWT.

Las métricas de adopción y tiempo ahorrado siguen pendientes: no se publica un resultado cuantitativo sin una fuente verificable y autorizada. Reutilizar los datos de los setlists evitó duplicar tablas y endpoints para calcular la rotación, y esa sigue siendo la decisión que más sostiene el caso. Quedan pendientes un diagrama sanitizado y mediciones verificables de uso; esos elementos no se sustituyen por estimaciones.

Enlaces

Chat interno de un setlist de servicio dominical en Canta.
Chat interno de un setlist de servicio dominical en Canta.
Pantalla de equipo musical con personas y roles en Canta.
Pantalla de equipo musical con personas y roles en Canta.

Evidencia y límites

4 declaraciones

  • La rotación calcula frecuencia y próxima fecha planificada sin agregar tablas o endpoints innecesarios.

    CV aprobado

  • El conteo evita duplicar canciones repetidas y respeta aislamiento por organización y borrado lógico.

    Validación técnica

  • El producto es una PWA instalable con soporte offline basado en Workbox, y renderiza acordes en notación ChordPro con audio de instrumentos vía soundfonts.

    Validación técnica

  • El backend gestiona autenticación JWT sobre MySQL mediante GORM.

    Validación técnica

Estado de métricas (2)

Adopción por equipos musicales

Pendiente: Falta confirmar una métrica de uso autorizada antes de publicar una afirmación cuantitativa.

Tiempo ahorrado en planificación

Pendiente: No existe todavía una medición previa y posterior verificable para comunicar este resultado.