Durvald
Player de música local-first com interface SolidJS e núcleo nativo em Rust
2025
Contexto
Durvald é um player desktop local-first para Windows, macOS e Linux, criado para devolver ao usuário o controle sobre sua coleção de música. Em vez de depender do catálogo e da conectividade de um serviço de streaming, o aplicativo indexa arquivos locais, organiza artistas e lançamentos e mantém filas, playlists e histórico no próprio dispositivo.
Interface e identidade visual do Durvald.
Problema técnico
Uma biblioteca local combina tarefas com características diferentes: leitura intensiva de arquivos e metadados, reprodução de áudio em tempo real, persistência transacional e uma interface que precisa responder imediatamente. Executar tudo no processo da interface bloquearia a UI e misturaria responsabilidades nativas com a camada de apresentação.
A solução separa responsabilidades por uma fronteira IPC. SolidJS cuida da apresentação e do estado reativo; comandos Tauri encaminham operações privilegiadas para Rust. O núcleo processa arquivos, controla o áudio, mantém a fila e persiste dados sem acoplar esses detalhes aos componentes visuais.
Arquitetura
O frontend é organizado em páginas, componentes, hooks e stores. A comunicação com o backend ocorre por invoke, enquanto eventos como progress-update e song-changed levam mudanças do player de volta à interface.
No processo nativo, Tokio coordena tarefas assíncronas; Kira faz streaming de MP3, OGG, FLAC e WAV; Lofty extrai tags, propriedades técnicas e capas; e SQLite armazena biblioteca, playlists, fila, histórico, configurações e a última sessão. Operações bloqueantes do banco usam pool de conexões e tarefas dedicadas.
Reprodução e continuidade
O player mantém uma fila VecDeque, histórico em memória e a faixa atual. Mudanças também são espelhadas no SQLite. Um loop assíncrono detecta o fim de cada faixa, inicia o próximo item e emite o novo estado para a interface.
A última sessão registra faixa, progresso, volume, shuffle, repeat, snapshot da fila e contexto de origem. Isso permite retomar a experiência após fechar o aplicativo.
Integração e segurança
A integração Last.fm implementa autenticação por token, “now playing”, scrobble e retry offline. Um rate limiter serializa chamadas para respeitar o intervalo da API. No macOS, segredos ficam no Keychain; no Windows e Linux, são cifrados com AES-256-GCM e vinculados à máquina e ao usuário. Os arquivos de áudio permanecem locais.
Aplicativo desktop multiplataforma
O Durvald funciona nativamente em Windows, macOS e Linux. O Tauri combina a interface SolidJS com o núcleo Rust em uma aplicação desktop única, mantendo acesso controlado ao sistema de arquivos, reprodução de áudio e armazenamento de credenciais em cada sistema operacional.
O pipeline de produção valida TypeScript antes de gerar, com Vite, os recursos da interface que serão incorporados ao aplicativo. O núcleo Rust é verificado com Cargo e o Tauri produz os instaladores específicos de cada plataforma.
Limites e evolução
O aplicativo já está funcional nos três sistemas operacionais suportados. As próximas etapas de qualidade são introduzir testes automatizados para stores, comandos e persistência, além de formalizar migrations do banco. A indexação também depende da consistência dos metadados presentes nos arquivos do usuário.