Descripcion del Proyecto
VidaNueva es una plataforma web para que equipos de musica de iglesias puedan centralizar su repertorio y preparar sus cultos sin depender de documentos dispersos. El producto combina una biblioteca de canciones con cifrado, gestion de organizaciones, editor de repertorio y una experiencia de lectura publica para compartir charts.
La aplicacion se construyo como un monorepo con frontend, API, dominio compartido e infraestructura como codigo. El backend serverless permite separar cada capacidad del producto en funciones independientes y mantener una superficie operativa acotada.
Caracteristicas Principales
- Biblioteca de canciones: alta, edicion, eliminacion y organizacion de canciones con letra, acordes, tonalidad, tempo y notas
- Editor de cifrado: edicion por secciones, asignacion de acordes sobre palabras, progresiones y serializacion en formato ChordPro
- Transposicion de tonalidad: cambio de tono conservando la estructura y la visualizacion del cifrado
- Modo en vivo: lectura de charts durante la interpretacion, con auto-scroll, metronomo y controles de presentacion
- Exportacion a PDF: generacion de partituras listas para imprimir o compartir, con portada, estructura, acordes y pie de pagina
- Gestion de cultos: armado de repertorios para cada culto, orden de canciones y asignacion de musicos
- Multi-tenant y roles: organizaciones, invitaciones y permisos diferenciados para administrar el acceso al contenido
- Biblioteca publica: publicacion selectiva de canciones y busqueda sin autenticacion
- Autenticacion: registro, confirmacion de email, recuperacion de contrasena y acceso con Google mediante Amazon Cognito
Tecnologias Utilizadas
Frontend
- React 18 + TypeScript: interfaz tipada y organizada por features
- Vite: desarrollo y empaquetado rapido para una SPA
- React Router: rutas publicas, autenticadas y protegidas por organizacion
- TanStack Query: cache y sincronizacion del estado proveniente de la API
- Tailwind CSS 4: sistema visual y componentes responsive
- dnd-kit: interacciones de arrastrar y soltar para ordenar repertorios
- React PDF: composicion de charts exportables desde el navegador
Backend y dominio
- TypeScript + AWS Lambda: funciones independientes para canciones, cultos, organizaciones, identidad y biblioteca publica
- Amazon API Gateway: API REST con rutas publicas y protegidas
- Amazon Cognito: autenticacion con email/password y Google OAuth
- Amazon DynamoDB: persistencia serverless para canciones, organizaciones, membresias e invitaciones
- Paquete core compartido: parser y serializer ChordPro, tipos de dominio y logica de transposicion reutilizados entre frontend y backend
Infraestructura
- Terraform: infraestructura reproducible para Cognito, DynamoDB, Lambda, API Gateway y hosting web
- Amazon S3 + CloudFront: distribucion del frontend estatico con CDN
Arquitectura
El monorepo separa responsabilidades en cuatro bloques:
apps/web: SPA React con modulos de autenticacion, organizaciones, canciones, cultos y biblioteca publicaapps/api: API serverless con handlers y casos de uso separados por dominiopackages/core: nucleo compartido para parsear, serializar y transponer canciones en formato ChordProinfra: modulos Terraform para desplegar la plataforma sobre AWS
La autenticacion y el control de pertenencia a organizaciones se resuelven antes de acceder a los recursos privados. La biblioteca publica utiliza rutas y funciones de solo lectura separadas, evitando mezclar el contenido publicado con las operaciones autenticadas del equipo.
Desafios Tecnicos
- Modelar un editor musical que permita modificar letra, acordes, secciones y anotaciones sin perder la estructura original
- Mantener la misma representacion de una cancion entre el editor, el modo en vivo, la transposicion y el PDF exportado
- Aislar los datos por organizacion y sostener permisos consistentes entre frontend, API y persistencia
- DiseƱar una infraestructura serverless reproducible con rutas publicas, funciones protegidas y proveedores OAuth