Show HN: Citadel, um app de gerenciamento de ebooks compatível com Calibre
(github.com/every-day-things)- Citadel é um app de gerenciamento de bibliotecas de ebooks que busca oferecer uma UX melhor e uma sensação de uso mais rápida, mantendo uma biblioteca de ebooks que o Calibre consiga ler
- Os objetivos centrais são retrocompatibilidade com o Calibre, uma interface fácil de usar e bonita, e desempenho muito mais rápido que o Calibre, sem nunca parecer lento
- No momento, é um software em estágio inicial, portanto bugs e falta de recursos são esperados; ele pode travar, não ter funcionalidades básicas ou danificar sua biblioteca de ebooks
- O Citadel não é um leitor de ebooks nem um editor de conteúdo de ebooks; ele abre arquivos no app padrão e foca no gerenciamento de metadados, como títulos
- Builds estáveis estão disponíveis em Releases, builds de desenvolvimento no GitHub Actions, e o desenvolvimento requer Bun e Rust
O que o Citadel pretende fazer
- Citadel é um app para gerenciar bibliotecas de ebooks, tendo como premissa central a retrocompatibilidade com o Calibre
- Bibliotecas modificadas pelo Citadel devem poder ser lidas pelo Calibre
- O projeto tem três objetivos
- Retrocompatibilidade com o Calibre: o Calibre deve conseguir ler bibliotecas editadas pelo Citadel
- Boa UX: deve ser fácil de usar e ter boa aparência
- Desempenho: deve parecer muito mais rápido que o Calibre e jamais ser mais lento
O que ele não faz
- O Citadel não é um leitor de ebooks
- Já existem bons apps de leitura de ebooks, e o Citadel abre os arquivos no app padrão do usuário
- O Citadel não é um editor de conteúdo de ebooks
- Se a necessidade for editar o conteúdo do corpo do ebook, e não metadados como o título, ele não é um substituto
- Ele não busca 100% de paridade de recursos com o Calibre
- Isso se aplica principalmente à área de plugins
- É possível que alguns recursos avançados do Calibre não sejam implementados
Estado atual e download
- O Citadel está em uma fase de desenvolvimento muito inicial
- Pode travar
- Pode não ter funcionalidades básicas
- Pode danificar sua biblioteca de ebooks
- Se você usar o Citadel com uma biblioteca do Calibre, é necessário fazer backups regulares
- Builds semiestáveis podem ser obtidas em Releases
- Builds de desenvolvimento podem ser obtidas em GitHub Actions
- A orientação é relatar problemas ou travamentos encontrados ao usar qualquer versão
Observações sobre instalação no macOS
- As builds para macOS ainda não são assinadas
- Ao abrir
Citadel.appdiretamente, será exibido um aviso dizendo que o arquivo está “damaged” - Remover o atributo Quarantine do arquivo resolve o problema
- Instruções relacionadas: Removing the Quarantine attribute from the file
- Comando de exemplo:
xattr -d com.apple.quarantine /Applications/Citadel.app/
Desenvolvimento e build
- Os pré-requisitos para desenvolvimento são instalar Bun e Rust
- Instalação de pacotes:
bun install - Executar em modo de desenvolvimento:
bun run dev # or just bun dev - Os comandos de lint e formatação são os seguintes
- Formatar todo o código:
bun format - Verificar formatação de todo o código:
bun format:check - Rodar lint em todo o código:
bun lint - Formatar backend:
bun format:backend - Rodar lint no backend:
bun lint:backend - Formatar frontend:
bun format:web - Rodar lint no frontend:
bun lint:web
- Formatar todo o código:
- É possível executar uma prévia do app sem o backend
- Erros serão exibidos porque ele assume que o backend em Rust existe, embora não esteja presente
bun dev:app - A build de produção é gerada com os comandos abaixo, após atender aos pré-requisitos de desenvolvimento
bun install bun run build
Atualizações e projetos relacionados
- O Citadel pode verificar atualizações do app e instalá-las quando solicitado
- A verificação automática de atualizações pode ser desativada em
Auto updates: On/Offnas Settings - A instalação é sempre feita explicitamente, e o texto da UI é
Install and restart - As configurações de mantenedores e os detalhes do workflow de releases estão em
docs/updater-and-releases.md - O Citadel usa o Calibre como referência e foi inspirado pelo protótipo no Figma de redesign do Calibre
1 comentários
Opiniões no Hacker News
Pode surgir a pergunta: “Por que criar um novo app em vez de contribuir para projetos existentes como o Calibre Web?”. A resposta é: porque eu simplesmente quis fazer
Por enquanto é um projeto de hobby, então estou mais interessado em me divertir criando software, mesmo que seja algo mais bruto, do que em expandir um projeto existente. O Citadel foi projetado para manter compatibilidade retroativa com o Calibre, então também dá para continuar usando o Calibre Web
No backend, também separei o código que interage com o Calibre em uma biblioteca à parte, e mais adiante pretendo permitir que outros projetos a usem. Uma CLI para a biblioteca do Calibre também parece possível
“Em muitas áreas, a ideia de não reinventar a roda é aceita quase como senso comum. Mas, às vezes, eu recomendaria fazer isso mesmo assim. O simples processo já torna você melhor, e é assim que, no fim, surgem rodas melhores. Porque as pessoas simplesmente tentam.”
https://www.youtube.com/watch?v=YOZnqjHkULc
O Calibre é bem sofrido de usar mesmo quando você conhece os recursos, o que torna difícil recomendá-lo tanto para avós quanto para pessoas com mais familiaridade técnica
Ainda assim, espero que o projeto dê certo
[0] https://www.cs.cmu.edu/~awb/linux.history.html
Se houvesse um concorrente sólido, mais aberto e moderno, pensado como uma biblioteca hospedada, eu provavelmente migraria na hora
Às vezes penso que, se o Calibre fosse apenas mais bonito, as pessoas perceberiam o quanto ele é incrível. Sinceramente, ele não é tão ruim assim, e eu pessoalmente gosto, mas parece que as pessoas não conseguem passar da aparência
Ele travava o tempo todo, e o processo era tão lento que acabei movendo para uma máquina separada. Ao pesquisar pela interface web, ela também era muito lenta
Isso sem falar da UI nada intuitiva. Para algo que deveria funcionar como uma biblioteca, ele fica muito aquém até de uma listagem de autores em ordem alfabética no estilo de uma biblioteca real
Entendo que a maioria das pessoas provavelmente tenha algo como 10 a 300 livros, mas tentei usar algumas bibliotecas grandes no Calibre e ele realmente não aguentou
A decisão de insistir apenas no SQLite também não ajuda. Abri um PR por volta de 2016, mas o mantenedor se opôs com bastante firmeza a mudar a camada de banco de dados ou torná-la substituível
Além disso, em poucos segundos dá para subir um contêiner do calibre-web e obter uma UI limpa e OPDS; então não vejo por que alguém suportaria aquela “estética”
Ele não é intuitivo e a UI/UX é bem ruim. Sofre exatamente da maldição comum de aplicativos poderosos
Ainda assim, vou testá-lo de novo hoje para ver se consigo me acostumar. Especialmente para usuários avançados, é realmente excelente para um produto gratuito
Bom projeto. Gosto dos recursos do Calibre, mas também fico bastante frustrado com a UI, então comecei a desenhar uma interface que parece uma mistura do iTunes pré-Apple Music com o iBooks
Ainda só fiz uma tela, mas dá para ver aqui: https://www.figma.com/file/m8qaYbPSnxiFPDPbuYtz2w/Calibre-re...
A pergunta central era como mostrar os principais recursos do Calibre em uma UI que pareça nativa do macOS
Se eu não mirar em multiplataforma, talvez, quando tiver tempo, eu tente transformar isso em um app SwiftUI com backend em Rust
Acompanhar e manter compatibilidade com o desenvolvimento do Calibre pode ser difícil, mas parece um projeto de hobby divertido
Em especial, o redesign que Kemie Guaida[1] postou no Reddit foi uma grande inspiração de design, e preciso dar os créditos no repositório, então vou refletir isso em breve: https://old.reddit.com/r/Calibre/comments/udzumn/testing_a_n...
A visão geral completa do projeto pode ser vista aqui: https://www.figma.com/file/g4ntqXWa6C0PRGrG3WjyXM/Calibre-pr...
[1]: https://kemielikes.design/
Percebi ontem que, no Ubuntu 22.04, depois de conectar o leitor Kobo, basta copiar os epubs diretamente para o diretório
root/no ponto de montagem/media/oakhaven/koboreader. Aí eles aparecem na lista de livros do dispositivoPor algum motivo eu achava que colocar livros no Kobo era complicado, e só usava o Calibre para transferir livros do notebook para o Kobo
Sei que o Calibre tem muitos outros recursos, mas eu não gostava da interface, e agora é bom não precisar mais usar o Calibre nem apps parecidos
Não precisa de nenhum formato especial, e formatos padrão como ePub funcionam bem
Por isso eu ficava me perguntando como o Kindle continuava tão popular. Talvez seja efeito de pioneirismo, mas um leitor de e-books que não lê ePub e PDF me parece um player de áudio que não toca MP3 e AAC
[1]: https://pgaskin.net/kepubify/
Acho que eu colocava os livros primeiro via USB e sincronizava notícias diárias e livros adicionais com rsync. Parte do conteúdo era gerada automaticamente e ia para o diretório, como coleta automática ou assinaturas por e-mail, e outras coisas eu colocava manualmente, como copiar livros novos depois da compra
Na verdade não é um problema muito complexo, mas o Calibre faz muito mais do que simplesmente copiar livros para uma estrutura específica de pastas
Não sei se é realmente mais fácil do que simplesmente abrir uma pasta e copiar/colar, mas o Citadel atualiza o arquivo de metadados usado pelo Calibre ao detectar quais livros estão no dispositivo, para não precisar ler todos os arquivos da pasta
Parece bom. Ainda na semana passada tentei usar o Calibre de novo e caí no buraco negro que é aquela UI. Pensei em contribuir com trabalho de UI/UX, mas pareceu que seria um projeto de vários anos
Talvez eu possa ajudar na UI/UX deste projeto em vez disso
Ele fez um trabalho incrível, mas é uma daquelas pessoas com opiniões muito fortes, e pode ficar rápida e arbitrariamente hostil de um jeito estranho em relação a certas coisas, mesmo que outra pessoa se ofereça para trabalhar nelas
Leio livros por alguns meses e depois repito o processo de importação
Fiquei sinceramente curioso: existe algum exemplo de app nativo de smartphone que seja tão rico em recursos quanto o Calibre e os ofereça de uma forma muito melhor e mais fácil?
Gosto do fato de um projeto de hobby ter sido lançado de verdade. Também tem uma aparência limpa. E o calibre CLI com certeza deve ser bem-vindo. Odeio ter que clicar por cinco níveis de menus
Se as áreas de "leitor" e "editor" não forem objetivos explícitos, fico curioso: o que o Citadel realmente faz pelo usuário? É principalmente um portal para ver, ordenar e clicar em livros? Há um roadmap com mais recursos em mente?
O Citadel oferece suporte — e já oferece parcialmente — à edição de metadados como título do livro, autor e, futuramente, tags e colunas personalizadas. Isso é certo. A sincronização com dispositivos também deve chegar com o tempo, e a capacidade de baixar metadados de fontes online também será adicionada
No entanto, não há planos para editar o conteúdo dos livros nem incluir um leitor de e-books integrado. Já existem muitos apps e dispositivos excelentes para e-books, e não acho que edição de epub seja algo tão comum quanto o gerenciamento de coleções
Não há roadmap, mas feedbacks e ideias são sempre bem-vindos
Além disso, recursos como conversão de formatos e remoção de DRM provavelmente também devem entrar. Idealmente, gostaria de implementá-los como crates ou plugins para tornar a extensão mais fácil
ebook-convert. Ela oferece suporte a vários formatos de arquivo, como epub, pdf, azw3, mobi etc.Exemplo:
ebook-convert file.epub file.azw3Parece muito legal e pretendo conferir. Ironicamente, recentemente criei um app desktop para gerenciamento de audiolivros com a mesma stack, ou seja, Rust + Tauri + Svelte
Fazendo uma divulgação caso alguém tenha interesse: https://gitlab.com/fonner/audiobook-locker#audiobook-locker
Fiquei curioso sobre por que você escolheu Svelte e Tauri para este projeto. Já estava familiarizado com eles?
Meio tangencial, mas essa forma de executar alegrou meu dia
bun dev -- -- -- -- --server ...Interessante. Eu também comecei a trabalhar por um tempo em um projeto parecido, com uma ideia semelhante, mas escolhi SvelteKit e o navegador em vez de um app nativo
https://github.com/project-kiosk/kiosk
Não estou conseguindo manter a motivação por tempo suficiente para terminar
Um texto curto sobre o Citadel: https://denhoff.ca/posts/replacing-calibre