Dumphere
Editor público de documentos com colaboração em tempo real, experiência offline e compartilhamento por URL, sem exigir conta.
- Papel
- Concepção, arquitetura e desenvolvimento
- Período
- 2026
- Tipo
- Produto próprio

O problema
Abrir um espaço compartilhado para escrever costuma custar uma conta, um convite e uma configuração de permissões. O Dumphere reduz tudo isso a escolher um endereço. O primeiro acesso cria a página e qualquer pessoa com o link já edita junto.
Requisitos
Funcionais
- Criar a página no primeiro acesso a um caminho válido, com até quatro segmentos e 100 caracteres.
- Editar ao mesmo tempo no modo visual ou na fonte Markdown, com cursores e presença dos participantes.
- Mostrar o estado da conexão e do salvamento.
- Manter o conteúdo no navegador durante quedas de rede e sincronizar quando a conexão voltar.
- Exportar o documento em Markdown ou HTML.
- Remover a página após 30 dias sem acesso.
Não funcionais
- Funcionar sem conta, autenticação ou coleta deliberada de dados pessoais.
- Sanitizar o HTML no servidor e limitá-lo a 512 KB, com limite de 2 MB para o snapshot colaborativo.
- Limitar por IP a criação de documentos, as requisições e as conexões colaborativas.
- Manter o conteúdo dos documentos e os tokens de conexão fora dos logs.
- Atender ao WCAG 2.2 AA nos temas claro e escuro, em português e inglês.
Minha contribuição
A primeira versão, de março de 2026, usava o Laravel Reverb com Echo para eventos de presença ao lado de um servidor Yjs que guardava as salas só em memória, com deploy em Docker. Em julho reescrevi a sincronização para depender só do Yjs, com o servidor Node exigindo um token assinado pelo Laravel e persistindo snapshots no PostgreSQL, troquei o Docker pelo deploy com o Laravel Forge e passei de 2 para 31 arquivos de teste. A edição rica usa Tiptap, com cache local por documento no IndexedDB. No servidor, o HTML é sanitizado antes de persistir, criação e conexões têm rate limit por IP e um scheduler remove documentos sem acesso há 30 dias. A interface é bilíngue e coberta por testes Pest. Também avaliei a camada de sincronização em um artigo, comparando-a com transformação operacional e com a substituição periódica do documento inteiro, modelo comum em editores por endereço. Com clientes automatizados digitando ao mesmo tempo, o Dumphere preservou 100% das palavras em todas as condições, inclusive durante desconexões, enquanto a substituição integral chegou a manter só 13% a 15% com oito clientes.
Destaques do projeto
- 100%das palavras preservadas com 8 clientes simultâneos
- ~101 msde mediana até outro cliente ver a edição, com 100 ms de ida e volta
- 30 diasexpiração automática de páginas sem acesso
Tecnologias
Laravel 13, Inertia, Vue 3, Tiptap, Yjs, PostgreSQL, Pest
Telas do sistema
