Project Description
VidaNueva is a web platform that helps church music teams centralize their repertoire and prepare services without relying on scattered documents. The product combines a chord chart library, organization management, setlist editing and a public reading experience for sharing charts.
The application is built as a monorepo with a frontend, API, shared domain package and infrastructure-as-code. Its serverless backend splits each product capability into independent functions and keeps the operational surface focused.
Key Features
- Song library: create, edit, delete and organize songs with lyrics, chords, key, tempo and notes
- Chord editor: section-based editing, word-level chord assignment, progressions and ChordPro serialization
- Key transposition: change a song’s key while preserving its structure and chord display
- Live mode: read charts while performing, with auto-scroll, metronome and presentation controls
- PDF export: generate charts ready to print or share, including cover, structure, chords and footer
- Service management: build setlists for each service, order songs and assign musicians
- Multi-tenant roles: organizations, invitations and differentiated permissions for content access
- Public library: selectively publish songs and search them without authentication
- Authentication: sign-up, email confirmation, password recovery and Google sign-in through Amazon Cognito
Technologies Used
Frontend
- React 18 + TypeScript: typed interface organized by feature modules
- Vite: fast development and SPA bundling
- React Router: public, authenticated and organization-protected routes
- TanStack Query: caching and synchronization for API state
- Tailwind CSS 4: responsive visual system and components
- dnd-kit: drag-and-drop interactions for ordering setlists
- React PDF: browser-side composition of exportable charts
Backend and domain
- TypeScript + AWS Lambda: independent functions for songs, services, organizations, identity and the public library
- Amazon API Gateway: REST API with public and protected routes
- Amazon Cognito: email/password authentication and Google OAuth
- Amazon DynamoDB: serverless persistence for songs, organizations, memberships and invitations
- Shared core package: ChordPro parser and serializer, domain types and transposition logic reused by frontend and backend
Infrastructure
- Terraform: reproducible infrastructure for Cognito, DynamoDB, Lambda, API Gateway and web hosting
- Amazon S3 + CloudFront: CDN delivery for the static frontend
Architecture
The monorepo separates responsibilities into four blocks:
apps/web: React SPA with authentication, organizations, songs, services and public-library modulesapps/api: serverless API with handlers and use cases separated by domainpackages/core: shared core for parsing, serializing and transposing ChordPro songsinfra: Terraform modules for deploying the platform on AWS
Authentication and organization membership are resolved before private resources are accessed. The public library uses separate read-only routes and functions, keeping published content isolated from authenticated team operations.
Technical Challenges
- Modeling a music editor that can change lyrics, chords, sections and annotations without losing the original structure
- Keeping one song representation consistent across the editor, live mode, transposition and PDF export
- Isolating organization data and enforcing consistent permissions across the frontend, API and persistence layer
- Designing reproducible serverless infrastructure with public routes, protected functions and OAuth providers