paperboy

paperboy is a minimal, keyboard-first, local-first browser extension that replaces your new tab with an RSS reader and podcast player. No accounts. No cloud sync. No tracking. Your feeds and episodes live on your machine as plain files. paperboy é uma extensão de browser minimal, keyboard-first e local-first que substitui a nova aba por um leitor de RSS e podcast player. Sem contas. Sem sincronização na nuvem. Sem rastreamento. Seus feeds e episódios ficam na sua máquina como arquivos simples.

Available on Firefox Add-ons. See the project site, GitHub, or the terminal UI (paperboy-tui). Disponível no Firefox Add-ons. Veja o site do projeto, GitHub ou o terminal UI (paperboy-tui).

Features Funcionalidades

RSS 2.0 & Atom

15-minute background refresh, categories, starred articles. Keyboard navigation with vim-style bindings throughout. Atualização em segundo plano a cada 15 minutos, categorias e artigos favoritos. Navegação via teclado com bindings no estilo vim.

Podcast Player

Auto-detects podcast feeds. Persistent playback bar that survives tab navigation. Speed control, skip ±15s/30s, state restored on reopen. Detecta automaticamente feeds de podcast. Barra de reprodução persistente que sobrevive à navegação entre abas. Controle de velocidade, skip ±15s/30s, estado restaurado ao reabrir.

Article Reader

Readability-based extraction opens articles in a clean, distraction-free view. No tracking pixels, no external requests. Extração baseada no Readability abre artigos em uma visualização limpa e sem distrações. Sem pixels de rastreamento, sem requisições externas.

Local-First Storage

All data lives in ~/paperboy/ as plain JSON and JSONL — readable, diffable, git-syncable across machines. No accounts, no cloud sync. Todos os dados ficam em ~/paperboy/ como JSON e JSONL simples — legíveis, diffáveis e sincronizáveis via git entre máquinas. Sem contas, sem sincronização na nuvem.

Keyboard-First

Every action reachable from the keyboard. vim-style navigation (j/k, gg/G, h/l), search (/), reader (Enter), podcast controls (p, <, >). Toda ação acessível pelo teclado. Navegação no estilo vim (j/k, gg/G, h/l), busca (/), leitor (Enter), controles de podcast (p, <, >).

Auto Theme

Switches between light (7am–7pm) and dark automatically. Manual override with t. Designed around a warm paper palette. Alterna entre claro (7h–19h) e escuro automaticamente. Override manual com t. Projetado em torno de uma paleta quente de papel.

Storage Armazenamento

Data lives in ~/paperboy/ as plain files — no database, no proprietary format. Os dados ficam em ~/paperboy/ como arquivos simples — sem banco de dados, sem formato proprietário.

~/paperboy/
├── feeds.json       # subscribed feed URLs
├── categories.json  # feed-to-tag mapping
├── history.jsonl    # append-only read history
└── starred.jsonl    # append-only starred articles

JSONL is intentional — append-only means no merge conflicts when syncing across machines via git. JSONL é intencional — append-only significa sem conflitos de merge ao sincronizar entre máquinas via git.