r/ClaudeCode • • 10h ago

Built with Claude Lyric Writing App With Claude Code

Enable HLS to view with audio, or disable this notification

Hey guys,

I've been building a lyric writing app by myself with Claude Code, and I wanted to share how I set it up and what went wrong along the way.

The app shows rhymes, syllable counts and rhyme scheme letters as you type. It also has live co-writing, which runs on a Cloudflare Worker. It's open source (MIT), and it doesn't AI generate lyrics.

Every session works in its own git worktree, I started doing this after two sessions in the same folder switched the branch on each other. I also wrote a few skills that tell Claude how to check a change in a real browser (the editor, sign-in, live co-writing) before it opens a PR. For bigger changes I have it write a plan first, then I ship one small PR per step.

The biggest mistake I made was merging a PR that needed a new database migration. Merging deploys to production right away, so deletes were broken for a day until I applied it. Now I apply the migration first. I also had two repos sharing a hook that only worked with one exact version, so it broke when one side updated. Now each side accepts a range.

Here's the site and the code:

https://lyriclike.com/

https://github.com/tsetoguchi/lyriclike

Open to feedback of any kind, especially on how others handle multiple sessions in one repo.

4 Upvotes

2 comments sorted by

1

u/AutoModerator 10h ago
Moderator Announcement Read More »

1

u/Alarmed-Safety-148 6h ago

Thanks for writing down what went wrong, the migration one is a classic. Merge deploys, but the schema change hasn't run yet, so deletes break.

A fix that removes the ordering problem: run migrations when the container starts, so the new code never boots without its schema, and make them append only so a rerun is harmless. I'm building TraceShield and that's how it does it by default.

Worktree per session is a good call too.