Moon Flower Society > Afluente: um leitor social para a web independente
Proposta de produto, identidade visual, arquitetura e roteiro para transformar a base do RSC em uma plataforma social de feeds mais bonita, útil, segura e operável.
Posted July 22, 2026. Markdown. Tags: pesquisa, ideia-de-projeto, rss, indieweb, rede-social, self-hosted, afluente.
Esta proposta parte do RSC — Really Simple Conversations, mas não pretende produzir apenas uma troca de logotipo ou uma interface mais bonita. A ideia é criar um produto reconhecível por conta própria: um excelente leitor de feeds, uma ferramenta de publicação e uma camada de conversa entre sites independentes.
O nome recomendado é Afluente. Cada blog, site ou perfil é uma nascente independente; seus feeds chegam ao leitor como afluentes; respostas de lugares diferentes formam uma conversa comum sem exigir que todos entreguem sua identidade e seu conteúdo à mesma empresa.
Frase principal: cada site mantém sua nascente. A conversa corre em comum.
Descrição curta: acompanhe pessoas e sites, publique no seu domínio e participe de conversas que continuam pertencendo à web aberta.
O RSC já prova que RSS pode transportar mais do que manchetes. O projeto reúne posts locais e remotos numa timeline, reconstrói respostas, publica feeds de saída, trabalha com RSS, Atom, JSON Feed, OPML, WebSub e rssCloud e oferece interoperabilidade com o rss.chat. Seu repositório informa, porém, que o sistema continua em pré-lançamento, sem versão oficial publicada, e que IndieAuth, Micropub, Webmention, categorias e mídia ainda fazem parte do roteiro futuro.
O Afluente deverá aproveitar esse núcleo técnico por meio de um fork responsável, preservando a licença MIT e os créditos. O esforço inicial deve se concentrar nas áreas em que um produto social autohospedado precisa ser realmente confiável:
A proposta evita começar com microserviços, aplicativo móvel nativo, três bancos de dados, inteligência artificial ou ActivityPub completo. A primeira versão deve continuar usando TypeScript, Hono, SvelteKit, SQLite, Docker Compose e Caddy, porque essa base já existe e é proporcional ao tamanho esperado de uma instalação pessoal ou comunitária.
O resultado não deve ser vendido como “um Mastodon de RSS”. A categoria mais clara é:
Leitor social da web aberta.
Esta ideia foi construída a partir de cinco frentes:
“Melhor” não significa ter mais funcionalidades. Nesta proposta, significa:
As constatações sobre o estado atual do RSC foram verificadas em 22 de julho de 2026. O projeto está evoluindo rapidamente, portanto algumas lacunas podem ser resolvidas pelo upstream antes do início do fork.
O RSC define a si próprio como uma timeline social nativa de feeds. Pessoas que publicam dentro da instância e pessoas que publicam em sites próprios aparecem como participantes do mesmo espaço. Posts, respostas e conversas viajam por feeds abertos em vez de dependerem de uma API proprietária.
Segundo o README oficial, já existem:
h-feed e microformats2;Essa é uma fundação valiosa. Parser, normalização, threading, geração de feeds, autenticação e interoperabilidade são justamente as áreas mais fáceis de subestimar numa reescrita.
O roteiro publicado pelo projeto ainda lista:
enclosures;O documento fundador descreve três tipos de identidade: usuário local, domínio remoto reivindicado e feed remoto não reivindicado. Entretanto, a reivindicação remota por IndieAuth aparece como parte do desenho, não como funcionalidade concluída. Essa distinção deve permanecer explícita em qualquer fork.
Em 22 de julho de 2026, o repositório se apresentava como pré-lançamento e ainda não tinha uma versão oficial publicada. Isso não diminui o mérito do sistema, mas significa que o Afluente precisará criar sua própria disciplina operacional:
A aplicação pública foi inspecionada diretamente em desktop. Ela já é limpa, rápida e legível, usando uma estrutura de três colunas: ferramentas à esquerda, timeline ao centro e informações da instância à direita. Na visualização observada, o centro tinha aproximadamente 609 pixels, a barra esquerda 256 pixels e a direita 288 pixels. A interface usava Public Sans no corpo, títulos com aparência editorial, fundo claro, cartões discretos e laranja como cor principal.
O problema não é feiura. O problema é que a apresentação ainda se comporta como uma demonstração técnica:
O Afluente deve conservar a sobriedade e o carregamento progressivo, mas organizar a informação de acordo com o tipo de conteúdo e a intenção do leitor.
Afluente é melhor que uma sigla técnica porque comunica movimento, encontro e independência. Um afluente não perde sua origem quando encontra outro rio. Essa metáfora descreve exatamente o produto: cada pessoa pode continuar no próprio domínio, mas participar de uma corrente compartilhada.
| Conceito técnico | Nome na interface |
|---|---|
| Timeline principal | Corrente |
| Feed ou site acompanhado | Fonte |
| Grupo de feeds | Canal |
| Thread de respostas | Confluência |
| Diretório de descoberta | Nascentes |
| Item salvo | Margem |
| Estado e entrega de resposta | Percurso |
| Importação OPML | Trazer minhas fontes |
Esse vocabulário deve ser usado com moderação. Os termos técnicos continuam disponíveis em ajuda e administração. Uma pessoa não deve precisar aprender uma metáfora para encontrar “Configurações” ou “Backup”.
Principal:
Cada site mantém sua nascente. A conversa corre em comum.
Curta:
A web volta a conversar.
Explicativa:
Leia sites, publique no seu domínio e converse pela web aberta.
A busca preliminar não encontrou um leitor social de RSS conhecido com o nome Afluente. Isso não é uma liberação jurídica de marca. Antes de publicar, será necessário consultar:
Não se deve comprar identidade visual ou anunciar o produto antes dessa verificação.
| Nome | Ponto forte | Limitação |
|---|---|---|
| Entrefios | Comunica conversas entre origens distintas | Já aparece em iniciativas sociais e negócios brasileiros |
| Ramal | Curto, sugere ramificação e conexão | Também significa extensão telefônica |
| Tecer | Ativo, humano e ligado à construção coletiva | Muito genérico para busca e domínio |
| Trama | Metáfora perfeita para threads e rede | Nome bastante ocupado por empresas e projetos |
| Confluência | Explica o encontro de fontes | Longo e institucional demais para aplicativo |
O Afluente será uma aplicação autohospedável que combina quatro produtos sem transformá-los em quatro sistemas separados:
Para o leitor:
“Tudo que você acompanha, sem algoritmo e sem perder o contexto.”
Para quem publica:
“Seu domínio é sua identidade; o Afluente distribui e reúne as conversas.”
Para quem hospeda:
“Uma instância que mostra o que está funcionando, o que falhou e como restaurar.”
O primeiro público não deve ser “todo mundo”. O produto deve servir bem a:
Grandes redes públicas, celebridades e milhões de usuários não são requisitos da primeira arquitetura.
Uma conta local é conveniente, mas o nível mais confiável de identidade deve ser um endereço controlado pela pessoa, como https://pablomurad.com. O sistema descobre nome, foto, biografia, feeds, rel="me", endpoint Micropub e endpoint Webmention. A interface diferencia claramente:
Um feed importado nunca deve receber aparência de perfil verificado apenas porque possui nome e avatar.
O Afluente deve ser bom mesmo para quem nunca publicar uma resposta. Isso exige:
O sistema identifica, sem esconder a origem:
Uma nota curta pode aparecer completa. Um artigo deve mostrar título, resumo, tempo estimado e imagem principal, abrindo numa leitura dedicada. Podcast precisa de player e duração. Resposta deve exibir o trecho ao qual responde. Esse tratamento reduz a sensação de que toda a internet foi comprimida no mesmo cartão.
Ao publicar uma resposta, o sistema apresenta uma sequência compreensível:
Resposta salva
↓
URL pública criada
↓
Feed atualizado
↓
Webmention enviada
↓
Destino confirmou recebimento
Cada etapa pode estar pendente, concluída, recusada ou com erro. A pessoa vê uma explicação simples e, se desejar, os detalhes técnicos. A transparência evita a falsa sensação de que “federado” significa “entregue”.
O usuário deve poder exportar:
Excluir conta deve gerar um pacote antes da remoção, se solicitado, e publicar tombstones quando o protocolo permitir.
| Área | RSC observado/documentado | Proposta do Afluente |
|---|---|---|
| Leitura | Timeline única com quatro filtros principais | Não lidos, salvos, coleções, busca, densidade e modos por conteúdo |
| Identidade | Local e remoto; domínio reivindicado ainda no desenho | Domínio verificado como identidade central, com estados visíveis |
| Conversas | Threads por feeds e interoperabilidade rss.chat | Thread unificada, Webmention e painel do percurso de entrega |
| Descoberta | Assinatura por URL e feeds conectados | Diretório editorial, recomendações manuais e integração opcional com WeirdNet |
| Visual | Limpo, porém uniforme e próximo de demonstração | Sistema editorial próprio, hierarquia por tipo e interface responsiva |
| Administração | Operação pouco exposta na interface pública | Saúde de feeds, filas, entregas, duplicatas, armazenamento e backups |
| Moderação | Não é o foco visível | Aprovação, denúncias, bloqueios, quarentena e políticas por instância |
| Mídia | Ainda no roteiro | Imagens e enclosures após estabilizar leitura e operação |
| Atualização | Pré-lançamento, sem release oficial | Releases semânticos, changelog, migrações e rollback documentado |
| Interoperabilidade | RSS, Atom, JSON Feed, OPML, WebSub, rssCloud e rss.chat | Mantém tudo isso e acrescenta testes permanentes para IndieWeb |
| Exportação | OPML e feeds de saída | Exportação de conta e restauração completa da instância |
| Acessibilidade | Base sem JavaScript é positiva | WCAG 2.2 AA, teclado, foco, redução de movimento e testes de leitor de tela |
Hoje apresenta um resumo de novas publicações e conversas importantes, sem algoritmo opaco.
Corrente contém todos os itens das fontes acompanhadas.
Não lidos é a caixa de entrada real do leitor.
Conversas reúne threads iniciadas, seguidas ou com novas respostas.
Salvos funciona como biblioteca de leitura posterior.
Canais organiza fontes por tema, projeto ou pessoa.
Nascentes permite descobrir sites e autores.
Publicar abre o compositor e pergunta onde publicar: conta local ou site conectado por Micropub.
┌──────────────────┬──────────────────────────────────┬──────────────────────┐
│ Afluente │ Corrente │ Contexto │
│ │ │ │
│ Hoje │ Filtros · densidade · busca │ Fonte selecionada │
│ Corrente │ │ Conversa │
│ Não lidos │ Item editorial │ Percurso da resposta │
│ Conversas │ Item curto │ Ações │
│ Salvos │ Podcast │ │
│ Canais │ Resposta com contexto │ │
│ Nascentes │ │ │
│ │ │ │
│ + Publicar │ │ │
└──────────────────┴──────────────────────────────────┴──────────────────────┘
A terceira coluna não deve exibir permanentemente um texto “Sobre”. Ela se torna uma barra de contexto: mostra informações sobre a fonte, a conversa, o item selecionado ou o estado de entrega. Em telas menores, abre como painel lateral.
No celular, a interface usa uma coluna e navegação inferior com cinco destinos:
Filtros aparecem numa folha inferior. Ações secundárias ficam no menu do item. O compositor pode ocupar a tela inteira e salvar rascunhos automaticamente. Nenhuma ação importante deve depender de gesto oculto.
O Afluente deve parecer uma mistura de revista independente, caderno de leitura e ferramenta de rede, não um painel corporativo e não uma cópia do Mastodon.
O símbolo recomendado combina três linhas fluidas que convergem sem se fundirem completamente. O espaço negativo forma simultaneamente:
Não usar ondas genéricas, planeta, globo de rede, mascote tecnológico ou o ícone laranja de RSS como logotipo principal. O símbolo precisa funcionar em 16 pixels e numa única cor.
| Papel | Cor | Uso |
|---|---|---|
| Nascente | #0E766E |
ações principais, links e foco |
| Tinta | #17221D |
texto e superfícies escuras |
| Papel | #F6F3EA |
fundo claro, menos agressivo que branco puro |
| Argila | #D56745 |
conversas, destaques e alertas não críticos |
| Musgo | #86A36B |
estados saudáveis e fontes verificadas |
| Névoa | #DCE7E1 |
bordas, seleções e superfícies secundárias |
| Noite | #101816 |
fundo do tema escuro |
Argila não deve ser usada como única indicação de erro, e Musgo não deve ser a única indicação de verificação. Ícone e texto acompanham a cor.
O corpo padrão deve ter pelo menos 16 pixels e entre 1,55 e 1,7 de altura de linha. Artigos usam coluna entre 65 e 75 caracteres. O usuário pode aumentar fonte e espaçamento sem quebrar os cartões.
Em vez de colocar todos os itens dentro de caixas pesadas, a Corrente usa divisores, espaço e uma pequena barra de origem. Cartões completos ficam reservados para:
Isso cria uma página mais parecida com publicação e menos parecida com painel administrativo.
Animações devem explicar mudança de estado:
Todas respeitam prefers-reduced-motion. Nenhuma animação automática fica em repetição.
h-feed;h-card, avatar e rel="me";source:inReplyTo e thr:in-reply-to preservadas;O painel administrativo deve responder rapidamente:
Cada erro deve trazer uma ação possível: tentar novamente, editar URL, aceitar redirecionamento, pausar fonte, mesclar duplicata ou abrir detalhes.
Uma rede baseada em URLs públicas continua sujeita a spam, perseguição, conteúdo malicioso e abuso de infraestrutura.
Todo fetch de feed, avatar, imagem ou Webmention deve:
A própria recomendação do W3C para Webmention alerta que endpoints podem induzir o servidor a realizar requisições arbitrárias e recomenda limites, processamento assíncrono e proteção de recursos internos.
iframe desabilitado por padrão;Um feed disponível publicamente não transforma o conteúdo em domínio público. O Afluente deve:
410 Gone quando detectados;O caminho recomendado é criar um fork e manter uma trilha clara de alterações. Isso reaproveita o que já funciona e permite comparar o comportamento com o upstream.
RSC upstream
↓
Fork Afluente
↓
Testes de comportamento existente
↓
Camada operacional e nova experiência de leitura
↓
Identidade por domínio e IndieWeb
↓
Decisão futura: continuar fork ou separar implementação
Uma reescrita imediata provavelmente entregaria uma tela melhor e interoperabilidade pior.
Não adicionar Redis apenas para executar polling. Não adicionar PostgreSQL apenas porque o projeto “pode crescer”. Esses componentes entram quando medições reais demonstrarem contenção ou volume incompatível com SQLite.
Core
Web
Armazenamento
Separar item bruto de publicação normalizada ajuda a corrigir o parser sem perder o material recebido e permite reprocessamento controlado.
A distribuição inicial deve oferecer:
caddy
web
core + worker
volume de dados
Banco, arquivos, chaves e configurações persistem em caminhos explícitos. Um comando cria a configuração; outro inicia; outro produz backup consistente. A documentação deve incluir Debian e Ubuntu, proxy externo, Tailscale e restauração num servidor vazio.
O backup precisa incluir:
O projeto só poderá declarar backup “funcional” depois de restaurá-lo automaticamente num ambiente limpo durante testes de release.
Os prazos abaixo são estimativas de planejamento, não compromissos. Pressupõem uma pessoa trabalhando com apoio de automação e reaproveitando o código do RSC.
Duração estimada: 1 a 2 semanas.
Saída: relatório de compatibilidade e decisão formal de fork.
Duração estimada: 4 a 8 semanas.
Critério de lançamento: uma pequena comunidade consegue usá-lo diariamente e o operador consegue explicar e recuperar falhas.
h-card e rel="me";enclosures de áudio e vídeo;Cada item aumenta manutenção, superfície de ataque e suporte. Nenhum é necessário para provar que um leitor social de feeds pode ser excelente.
Estas são metas internas sugeridas e devem ser medidas numa VPS definida pelo projeto:
O RSC usa licença MIT. Ela permite usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e vender o software. A condição essencial é conservar o aviso de copyright e o texto da permissão em cópias ou porções substanciais reaproveitadas.
Para o Afluente:
LICENSE com o aviso original dos contribuidores do RSC;Uma forma respeitosa de apresentação seria:
Afluente é um fork independente do RSC, construído sobre ideias de Textcasting, rss.chat e padrões IndieWeb. Não é afiliado nem endossado pelos projetos de origem.
Esta seção é orientação prática, não parecer jurídico.
Não comece pelo logotipo nem por uma reescrita. Instale o RSC numa URL de laboratório, importe 50 a 100 feeds reais, publique, responda, edite, exporte OPML e provoque falhas. O produto novo deve nascer de problemas observados, não apenas da lista de funcionalidades do README.
Crie testes de regressão para:
Só depois altere a experiência de leitura.
Construa três telas de alta fidelidade antes de redesenhar toda a aplicação:
Essas telas testam as partes mais distintivas da proposta. Landing page e diretório podem esperar.
Use Afluente como nome de trabalho. Antes de criar domínio público, faça a busca de marca e colisões. Se houver conflito relevante na área de software ou comunicação, a alternativa recomendada é Ramal.
A ordem correta é:
Confiabilidade da base
↓
Leitura excelente
↓
Operação e moderação
↓
Identidade por domínio
↓
Conversas cross-site
↓
Mídia e alcance adicional
O projeto será melhor que a referência se as três primeiras camadas forem excelentes, mesmo antes de concluir as demais.
O RSC é uma referência valiosa porque trata RSS como infraestrutura social, não apenas como lista de links. Ele já resolve uma parte difícil: fazer conteúdos locais e externos coexistirem, publicar feeds, transportar edições e reconstruir conversas.
A oportunidade do Afluente está em transformar essa prova técnica num produto que as pessoas queiram usar todos os dias. A vantagem não será uma lista maior de protocolos, mas a combinação de:
Afluente é uma direção de marca forte porque traduz a arquitetura do produto sem recorrer a sigla ou jargão. A frase “cada site mantém sua nascente” expressa a promessa central: juntar pessoas sem capturar suas identidades e seus conteúdos.
A recomendação final é criar um fork pequeno, testado e operacional, lançar primeiro o melhor leitor social possível e adicionar IndieAuth, Micropub e Webmention em etapas verificáveis. Assim o projeto pode ser mais bonito que o RSC, mas, principalmente, mais confiável, compreensível e útil.
Pesquisa concluída em 22 de julho de 2026. O RSC estava em desenvolvimento acelerado e se declarava pré-lançamento, portanto funcionalidades, arquitetura, documentação, licença e estado de releases podem mudar. Confirme o repositório oficial antes de iniciar o fork. O nome Afluente passou apenas por uma busca preliminar e exige verificação jurídica de marca, domínios e identificadores antes de qualquer lançamento público.
View the original Markdown file
Ideas | What changed | RSS | About | Text version
Pablo Murad <pablomurad@pm.me>