Overview
I'm the music director and audio engineer for my church's band. Every week, setlists, song keys and schedule changes got lost in the group chat. So I built TCDD Musica, an app that puts all of it in one place, works in Spanish and English, and is built for phones first.
What it does
- Songbook: search, A–Z index, filters by song type, difficulty, speed and rhythm, keys shown in letters (C, Dm) or Do Re Mi, and lyrics with adjustable text size
- Services and setlists: services and practices are generated from a weekly schedule; leaders build setlists with drag and drop, publish them, and share them to the group chat with one tap
- Calendar and availability: members block out dates they can't make it, and leaders see who's out
- Roles and permissions: four roles (Admin, Leader, Member, Viewer) with team-based visibility, checked on the server
- Notifications: web push notifications for published setlists and schedule changes, with per-type settings on each phone
- Installable and offline-friendly: works like an app on phones, with offline support
How I built it
- Next.js App Router with TypeScript, Prisma and PostgreSQL (Neon), deployed on Vercel with scheduled cron jobs
- Authentication with admin-created accounts (no public sign-up), forced password change on first login, and lockout after repeated wrong passwords
- Automated tests with Vitest
- A real release process: semantic versions and a changelog for every release (40+ releases so far)
Challenge
Building this web app meant learning new parts of the stack as the app needed them, and adapting every time a new technology came in. The project also grew quickly. Keeping track of every file and how everything connects became a challenge of its own, and I had to learn to adapt as it grew.