3 pontos por GN⁺ 2024-06-13 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2024-06-13
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 web
    A 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

    • A stack web certamente tem muitas pequenas complicações, mas o IndexedDB tem funcionado de forma bastante estável
      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
    • Quem cria apps no navegador precisa tomar muito cuidado com o fato de que muitos navegadores podem descartar parte do armazenamento de sites quando há pouco espaço em disco
      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 Electron
    • Acho que o armazenamento offline mais seguro é usar o sistema de arquivos do navegador (https://developer.mozilla.org/en-US/docs/Web/API/File_System...) para manter os dados fora do alcance do navegador
      Funciona 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”
    • Em navegadores baseados em Chromium, agora é possível manter os dados em um arquivo como ~/.app/app.dat
      Referência: https://developer.chrome.com/docs/capabilities/web-apis/file...
    • Este app parece usar better-sqlite3[0] e armazenar o banco de dados em um arquivo chamado private/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

    • Realmente não pensei o suficiente no fato de que as pessoas podem vir de outros sistemas com conceitos diferentes. Vou explicar melhor o fluxo de trabalho nas notas de demonstração
      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ítulo
      Não há um conceito separado de tags, mas você pode escrever #someTag e pesquisar exatamente por #someTag. A busca é uma simples pesquisa de substring em todas as notas, sem recursos avançados como stemming
    1. Quanto mais opções de apps de notas que possam ser auto-hospedados, melhor
    2. Erro de digitação na página de demo: PriavcyPrivacy
    3. Fiquei curioso sobre por que, em um navegador, aparece o erro “Your browser does not support service workers. Please use another browser.” Gostaria de saber se dá para contornar isso, ou se o uso de service workers é essencial para o diferencial deste app
    • Sem service workers, ele deixa de funcionar offline, e esse é um dos recursos centrais
      Lembro 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
    • Outro pequeno erro de digitação: GitHub falvoredGitHub flavored
  • Fico 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

    • Eu gostaria de incluir um editor WYSIWYG, mas nos testes iniciais não encontrei algo que funcionasse bem em todas as plataformas
      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

    • Também já usei o Joplin e gosto bastante, mas havia alguns problemas além do fato de ser um app Electron
      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....

    • Zettel Notes é recomendável. A integração Git com o SourceHut foi um pouco trabalhosa, mas, depois de configurada, é ótima, e também oferece suporte à maioria dos recursos Org que eu uso
  • 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

    • Se isso tornar a implantação mais fácil, lançar um contêiner Docker parece uma boa opção
  • Excelente. Fico curioso se você pode contar mais sobre os apps nativos
    Estou procurando algo nativo como o Apple Notes, leve e rápido

    • Não é um app nativo, é um aplicativo web progressivo (PWA)
      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.json não encontrei nenhuma biblioteca específica de CRDT ou sincronização
    Se a sincronização é própria, fico curioso sobre como vocês lidam com conflitos

    • Não é CRDT; escolhi uma abordagem muito mais simples
      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