Filosofia do Produto

A Visão do Produto descreve o que o InkShelf é. Este documento descreve os princípios que orientam como decisões de produto são tomadas — o porquê por trás das escolhas, para que futuras funcionalidades se mantenham coerentes com o que já existe.

Princípios

A pasta do usuário é intocável

A biblioteca não é um catálogo próprio do app que o usuário alimenta — é um espelho fiel de uma estrutura de pastas que já existe no aparelho. Nada é copiado, movido ou reorganizado para caber num modelo do InkShelf. Isso significa abrir mão de conveniências comuns em outros apps (coleções virtuais, tags cross-pasta, importação com deduplicação) em troca de uma garantia simples: o usuário nunca perde controle sobre onde seus arquivos realmente estão.

Local por padrão, servidor é opção do usuário — não do app

"Sua biblioteca, do seu jeito" é a frase que o próprio app usa para se apresentar no onboarding. O uso básico nunca exige conta, login ou servidor: todo dado sobre a biblioteca vive no aparelho por padrão. O que existe além disso — conectar um servidor Komga/Kavita (ver Fontes Remotas) — não é uma exceção a esse princípio, é a aplicação dele até o fim: o servidor é sempre self-hosted e escolhido pelo usuário, nunca uma infraestrutura do InkShelf, e nunca é exigido para o app funcionar. Uma funcionalidade que exigisse conta ou dependência permanente de rede do InkShelf para o uso básico estaria fora do espírito do app; depender de um servidor que o próprio usuário já roda e controla, por opção dele, não.

Nada é imposto — tudo relevante é opt-in

Histórico e Estatísticas são funcionalidades opcionais, apresentadas (e escolhidas) já no onboarding, não ligadas silenciosamente por padrão. Notificações de leitura seguem o mesmo padrão: o usuário decide se quer lembretes, com canais dedicados que podem ser desligados independentemente. A filosofia aqui é de consentimento explícito antes de qualquer coleta ou automação, mesmo quando o dado nunca sai do aparelho.

Continuar de onde parou é o centro de gravidade

Boa parte do produto é organizada em torno de retomar uma leitura em andamento, não só navegar um catálogo estático: a tela Início prioriza continuidade, a aba dedicada "Continuar lendo" existe separada da Biblioteca geral, e notificações lembram o usuário de voltar a um arquivo. Descoberta de conteúdo novo é secundária a não perder o fio do que já foi começado.

Personalização visual é parte do produto, não um acessório

Temas de cor, tamanho de card, cantos de capa, modo de animação e a disposição das seções da Home são todos ajustáveis. Ler é uma atividade prolongada e pessoal, e o app trata a aparência da leitura com o mesmo peso que trata a funcionalidade — não é um "extra" isolado numa tela de configurações secundária.

Cada formato de leitura merece um leitor pensado para ele

Quadrinhos e PDFs são conteúdo paginado, onde a fidelidade visual da página original importa (zoom, pan, modos de leitura em par/individual, sentido de leitura ocidental ou mangá). EPUB é texto reflowable, onde o que importa é controle tipográfico e continuidade de leitura sem cortar palavras no meio. Em vez de forçar um leitor genérico para os dois casos, o InkShelf mantém pipelines de extração e telas de leitura inteiramente separadas para cada natureza de conteúdo.

Não competir pela atenção do usuário

O InkShelf organiza o que o usuário já tem — não tenta ser uma vitrine de descoberta, não sugere onde comprar ou baixar quadrinhos, e as notificações que emite são sobre retomar leitura, não sobre engajamento. O app existe para sair do caminho depois de ajudar a encontrar o próximo arquivo.

Tensões conscientes

Esses princípios têm custo, e vale nomear o trade-off em vez de escondê-lo:

  • Espelhar a pasta real limita a organização. Sem uma camada de metadados própria, dois arquivos com nomes de pasta diferentes não têm nenhuma relação automática entre si além do que ComicInfo.xml eventualmente descrever. A estrutura de pastas do usuário é, por design, o critério de organização primário — se ela for bagunçada, a biblioteca no app também será.
  • Sincronizar entre dispositivos continua fora de escopo — como recurso próprio do InkShelf. O app não tem (nem pretende ter) uma conta ou nuvem que carregue progresso/favoritos/histórico de um aparelho pro outro sozinho. O único caminho de sincronização é indireto e opt-in: se o usuário já conecta o mesmo servidor Komga/Kavita em dois aparelhos, progresso e favoritos dos itens remotos acompanham através do servidor — não porque o InkShelf sincroniza, mas porque os dois aparelhos estão falando com a mesma fonte externa. Itens de pastas locais continuam sem nenhuma forma de sync entre dispositivos.
  • A sincronização remota herda a mesma tensão trust-the-folder, só que contra um servidor em vez de um sistema de arquivos. Progresso e favoritos de itens Komga/Kavita são espelhados via uma Reading List no servidor (não um recurso nativo de favoritos em nenhum dos dois) — uma solução pragmática, não a API "certa" que nenhum dos dois provedores oferece. E operações em massa (marcar uma pasta inteira como lida) foram deliberadamente cortadas de sincronizar com o servidor depois de causarem queda de conexão consistente sem causa raiz diagnosticável — um caso onde confiabilidade local venceu paridade completa com o servidor.