Devin Alvarez

Personal project · 2026 · Solo

Band Setlist & Songbook App

In active development (v0.41)

A bilingual, phone-first web app for my church's band — services, setlists and a shared songbook in one place, instead of lost in a group chat.

My role
Designed, built and deployed the app end to end
Built with
  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • PostgreSQL
  • Prisma
  • Better Auth
  • Web Push
  • Vitest
  • Vercel

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.

Screenshots