Pitch: Fiz um app de setlist pra usar no palco (Rust e Next.js)
Sou músico, toco guitarra/violão e dou aula. Programo também, mas esse é o primeiro projeto web que eu coloco no ar pra outras pessoas usarem.
A ideia surgiu porque os aplicativos que eu usava pra letra e cifra em show encheram de anúncio. E eu queria algo que fosse do meu jeito. Então o visual e o comportamento do app seguem o que eu acho bom na hora de tocar.
O Setlyst serve pra organizar repertório, montar setlist e ler letra e cifra no celular ou tablet durante o show, com metrônomo e troca de tom. Cada um cadastra as próprias músicas, não tem catálogo. Acho que pode ser útil principalmente pra quem toca em barzinho e em igreja.
A API é em Rust (Axum) com PostgreSQL e o front é Next.js. Tá rodando em Neon, Render e Vercel.
A parte que mais me deu trabalho foi o offline, mas é uma feature importante porque em show quase nunca tem internet boa. Algumas coisas que aprendi no caminho:
Eu sincronizo tudo de novo toda vez, em vez de fazer incremental. O repertório de um músico geralmente é pequeno, então baixo tudo pro IndexedDB com Dexie. Gasta um pouco mais de banda, mas o código fica mais simples e eu consigo confiar nele, ou quase isso hahah. Offline é só leitura, pra criar e editar precisa de conexão.
No começo, se a chamada de uma banda falhava, a sincronização inteira era abortada e a pessoa ficava sem nada salvo. Agora cada etapa trata o próprio erro e o que deu certo fica.
Pra funcionar offline o service worker precisa guardar as páginas também, não só os dados. Quando eu mandava guardar todas de uma vez, eram dezenas de renders batendo na API ao mesmo tempo e o meu próprio rate limit me bloqueava. Resolvi limitando quantas rodam em paralelo.
E o service worker novo não assume sozinho depois de um deploy. Se ele assume, a aba que ainda tá na versão antiga pede um arquivo JS que não existe mais e quebra. Então a versão nova fica esperando até a pessoa aceitar atualizar.
Tá em beta e todas features liberadas de graça até a versão 1.0. Depois vai ter assinatura, de R$ 14,90 a R$ 39,90 por mês.
Deve ter coisa bem feia aí no meio, então se alguém quiser testar ou criticar eu vou gostar de ler.