HN lançado: Unforget, app de notas offline-first e criptografado
(unforget.computing-den.com)- O Unforget é um app de notas minimalista que permite escrever notas primeiro no dispositivo local e continuar com sincronização criptografada, destacando privacidade e usabilidade entre dispositivos
- Por ser um Progressive Web App, pode ser usado no navegador, no desktop e no mobile, funcionando sem Electron.js
- Oferece escrita em Markdown, exportação com um clique em formato JSON, API pública e opções de self-hosting e nuvem
- Com cadastro gratuito, é possível usar backup em nuvem e sincronização totalmente criptografados, sem necessidade de e-mail ou número de telefone
- Suporta importação de Google Keep, Apple Notes e Standard Notes, mas a disponibilidade e a forma de instalação variam conforme o navegador
Notas offline-first e controle dos dados
- Unforget é um app minimalista para escrever notas com foco em offline-first, oferecendo sincronização criptografada de ponta a ponta
-
Formato do app e ambiente de uso
- Pode ser usado como Progressive Web App no navegador, no desktop e no mobile
- Funciona sem Electron.js e oferece instalação opcional com um clique
- Destaca um design com privacidade em primeiro lugar e é disponibilizado como open source sob licença MIT
-
Escrita, migração e exportação
- Suporta escrita em Markdown
- Permite importação de Google Keep, Apple Notes e Standard Notes
- Os dados das notas podem ser exportados com um clique em formato JSON
-
Sincronização e expansão
- Com cadastro gratuito, é possível fazer backup das notas na nuvem em estado totalmente criptografado e sincronizá-las entre vários dispositivos
- O cadastro não exige e-mail nem número de telefone
- Oferece tanto opção de self-hosting quanto de nuvem
- Permite criar clientes próprios por meio de uma API pública
Formas de instalação por navegador
- O Unforget pode ser usado diretamente no navegador, e a forma de instalação varia conforme o ambiente
-
Suporte à instalação
- Chrome: usar o ícone de instalação na barra de URL
- Edge: usar o ícone de instalação na barra de URL
- Android Browser: menu → Add to Home Screen
- Safari Desktop: Share → Add to Dock
- Safari iOS: Share → Add to Home Screen
- Firefox Android: usar o ícone de instalação na barra de URL
-
Limitação de instalação
- Não pode ser instalado no Firefox Desktop
1 comentários
Opiniões no Hacker News
Tenho curiosidade sobre a experiência de criar um PWA offline-first
A ideia de usar a web apenas como meio de distribuição e o navegador como ambiente de execução é atraente, mas me preocupam as pequenas complicações do armazenamento local
Como os dados não aparecem como um arquivo do tipo
~/.app/app.dat, dá uma sensação de “se não está visível, é esquecido”, e também incomodam a possibilidade de sumirem de repente com uma atualização do navegador e a complexidade de lidar com versionamento de esquema no modelo básico da webA portabilidade dos dados ao mudar para um computador novo também é um problema; o fato de poder distribuir sem servidor, bastando uma conta do GitHub, é atraente, mas a parte dos dados ainda parece instável
Mesmo deixando de lado a ausência de algo como SQLite, a abordagem de empacotar SQLite como um bloco de WebAssembly não me agrada muito
Ainda assim, há limitações irritantes, como não poder definir cada chave como ascendente/descendente ao criar índices no armazenamento usando várias chaves
Se você instalou um PWA adicionando-o à tela inicial, o navegador não deveria apagar o IndexedDB por motivos como uma atualização, e na prática os navegadores parecem respeitar isso
Minha experiência com desenvolvimento de PWA foi, no geral, mista e depende muito do tipo de app. Para um app de notas com backup e sincronização criptografados na nuvem, um PWA pode ser a melhor opção; mas, se for preciso uma integração mais profunda com a plataforma, como acesso ao sistema de arquivos, eu evitaria PWA
Outro problema é o Safari no iOS, que não tem muitos recursos de PWA, como sincronização em segundo plano ou notificações push offline, e parece pouco provável que venha a suportá-los
Fiquei curioso se você está avaliando PWA para algum app específico
Isso já é irritante no uso normal, mas, se não houver backup no servidor, passa de mera irritação
Não tenho certeza se esse alerta também se aplica ao
localStorage, mas, pela minha experiência, aplicou-se ao IndexedDB, e pareceu acontecer também em apps ElectronFunciona bem, mas a desvantagem é que o usuário precisa selecionar novamente o arquivo ou diretório toda vez que usa o app, e não há como forçar o seletor de arquivos a iniciar em um diretório específico que não seja um “diretório conhecido”
~/.app/app.datReferência: https://developer.chrome.com/docs/capabilities/web-apis/file...
better-sqlite3[0] e armazenar o banco de dados em um arquivo chamadoprivate/unforget.db[1]Não tenho experiência com SQLite, então não sei se esse arquivo é tão volátil quanto o
localStorage[0] https://www.npmjs.com/package/better-sqlite3
[1] https://github.com/computing-den/unforget/blob/master/src/se...
Parece bom. Uma sugestão: seria legal mostrar com mais clareza o fluxo de criação de notas
Ainda não está claro se são documentos Markdown com título organizados em uma estrutura de pastas/hierarquia, se são “cartões” sem título ou com título opcional organizados por tags, ou se é um documento Markdown longo ao qual você vai acrescentando coisas continuamente
Cada uma dessas opções lembra fluxos de trabalho de sistemas de notas populares, então gostaria de entender qual fluxo vocês projetaram e otimizaram
A pista de que você começou como usuário do Google Keep ajuda, mas eu já usei arquivos de texto Homebrew, Simplenote, Obsidian etc., e também tenho alguma noção de Evernote e OneNote; então seria bom ter mais alguns sinais de orientação sobre o modo de uso
Para responder rapidamente: normalmente mantenho notas bem pequenas, de poucas linhas ou com caixas de seleção de tarefas, e uso uma nota por ideia. Porém, se alguma ideia crescer ao longo de vários dias, essa nota também pode ficar bem maior, e não há limite de tamanho para as notas
Como no Markdown padrão, você pode definir o título da nota com
#; se deixar uma linha em branco depois da primeira linha, a primeira linha se torna automaticamente o títuloNão há um conceito separado de tags, mas você pode escrever
#someTage pesquisar exatamente por#someTag. A busca é uma simples pesquisa de substring em todas as notas, sem recursos avançados como stemmingPriavcy→PrivacyLembro que, durante viagens, às vezes eu tentava anotar algo no Google Keep e descobria que não funcionava offline
Fiquei curioso sobre qual navegador você está usando
GitHub falvored→GitHub flavoredFico curioso se há planos de integrar algo como https://simplemde.com/ quando as notas ficarem mais complexas
Para notas com tabelas etc., eu preferiria um editor WYSIWYG mais simples, em vez de continuar me preocupando com a sintaxe Markdown
Vou tentar isso também
Trabalho incrível, espero que evolua ainda mais
Me lembrou o Joplin, e fico curioso sobre que direção você pretende dar a este app
Por exemplo, o fluxo de trabalho não parecia rápido o suficiente. Eu deveria conseguir abrir o app, no máximo tocar uma vez e começar a digitar imediatamente, além de inserir vários itens de tarefas sem ir a um menu ou apertar outro botão. No desktop, de qualquer forma, tudo deveria ser centrado no teclado
Em outras palavras, quero que a UI não atrapalhe, e acho que muitos apps de notas deixam isso passar
Como direção, quero facilitar a migração a partir de outros apps. Já existe importação do Google Keep, mas precisa haver muito mais
Como há uma API pública, seria bom ver clientes ou integrações para Emacs, VS Code e Vim
Fora isso, ele já atende quase todas as minhas necessidades atuais
Estou sempre procurando um repositório de conhecimento estruturado melhor e, embora normalmente eu evite apps Electron ou JavaScript no desktop, parece que a maior parte da experimentação vem dali
Sendo um app JavaScript, fico curioso se você considerou suporte a diagramas Mermaid. Embora seja pesado, o motivo de eu usar o Joplin hoje em dia para notas é que a sintaxe Mermaid mudou o jogo em comparação com Markdown simples
https://mermaid.js.org/
Recentemente eu vinha sentindo uma frustração parecida com apps de notas para Android, até encontrar um app muito bom que gostaria de apresentar
É um app chamado Zettel Notes[1], totalmente offline, com suporte a várias opções de sincronização, e as notas são arquivos Markdown simples armazenados em diretórios
[1] https://play.google.com/store/apps/details?id=org.eu.thedoc....
Estou sempre procurando um app de notas que possa ser auto-hospedado e tenha boa aparência tanto no celular quanto no desktop
Fico curioso se há planos de disponibilizar um contêiner Docker algum dia
Excelente. Fico curioso se você pode contar mais sobre os apps nativos
Estou procurando algo nativo como o Apple Notes, leve e rápido
Eu mesmo venho usando bastante em um iPhone antigo, e ele é leve e rápido
Para instalar, no Safari vá em compartilhar → adicionar à tela de início
Fico curioso sobre o que vocês usam para sincronização
Analisei várias soluções de CRDT, mas não tinha certeza de qual usar, e no
package.jsonnão encontrei nenhuma biblioteca específica de CRDT ou sincronizaçãoSe a sincronização é própria, fico curioso sobre como vocês lidam com conflitos
if (a.modification_time > b.modification_time) ...É só isso. Como outras funcionalidades, originalmente eu pretendia implementar CRDT, mas percebi que, na prática, não faz falta
Como não é um editor colaborativo em que vários usuários editam a mesma nota, CRDT não é tão útil
Em um app de notas pessoal, acho que CRDT só se torna necessário em situações como editar a mesma nota ao mesmo tempo em vários dispositivos enquanto todos estão offline