Eu gosto muito de ler na internet, mas sempre odiei ler no browser. Quando pego algo para ler e não consigo terminar por qualquer motivo, ou fica parado em uma aba ou vai para um bookmark.
O que eu mais tenho nos bookmarks são pastas de coisas para ler depois. Dezenas delas.

Meu Brave atualmente
Já tem um tempo que tenho achado isso impraticável. E como todo bom software engineer, ao invés de usar uma ferramenta pronta, porque não fazer a minha?
Mas qual seria a forma mais simples para resolver? Como, onde e de que forma eu iria consumir esse conteúdo? Assim nasceu a primeira versão.
Decidi fazer um CLI em Go para gerar um EPUB, com a ideia de passar uma lista de links e cada um virar um capítulo, na mesma ordem de entrada.
Adicionei mais umas coisas e o projeto ficou com a seguinte estrutura:
├── assets
│ ├── covers # 30 imagens tratadas do Pexels para servir de capa
│ ├── fonts # Fontes customizadas. Roboto (título), Baskerville (corpo)
│ └── templates # CSS customizado
└── internal
├── cover # Gerador de capa
├── epub # Compila o EPUB final
├── extract # Parser transforma HTML em um objeto estruturado (model)
│ └── testdata # Posts de exemplo para testes unitários
├── fetch # Cliente HTTP
├── ingest # Ligação entre a camada de cache e parser
├── model # Objetos de domínio (Post, Image, Book, Chapter)
└── store # Cache usando SQLite
No final, para cada link passado ele:
Assim ficou a primeira versão com Bubble Tea:
CLI rodando com Bubble Tea
Agora eu posso mandar pro Kindle ou ler no Books do Mac a hora que eu quiser. Ganho de graça todas as features dos leitores como marcação de página, tempo de leitura, sincronização entre meus devices, etc.
Já tinha esse setup funcionando há um tempo, mas havia algumas partes chatas:
Então isso se tornou uma grande ideia para um projeto que possívelmente ninguém vai comprar!
Assim nasceu o Booker!
Ele está bem longe de ser feature-perfect. Esse é um projeto onde eu quero estudar várias soluções, tecnologias enquanto leio meus artigos. Estou sem muita pretenção dele se tornar um produto viável financeiramente. Se for útil para uma dúzia de pessoas, to feliz.
Nos próximos posts vou me aprofundar mais nas decisões de arquitetura e como migrei do CLI para SaaS.
Stay tuned! ;)