3 points par GN⁺ 2024-06-13 | 1 commentaires | Partager sur WhatsApp
  • Unforget est une application de notes minimaliste conçue d’abord pour un usage local, puis pour une reprise via une synchronisation chiffrée, en mettant en avant à la fois la confidentialité et l’usage sur plusieurs appareils
  • Sous forme de Progressive Web App, elle peut être utilisée dans le navigateur, sur desktop et sur mobile, et fonctionne sans Electron.js
  • Elle propose l’écriture en Markdown, l’export en un clic au format JSON, une API publique, ainsi que des options d’auto-hébergement et de cloud
  • Avec une inscription gratuite, il est possible d’utiliser la sauvegarde cloud et la synchronisation entièrement chiffrées, sans adresse e-mail ni numéro de téléphone
  • Elle prend en charge l’import depuis Google Keep, Apple Notes et Standard Notes, mais la disponibilité de l’installation et sa méthode varient selon le navigateur

Notes hors ligne d’abord et contrôle des données

  • Unforget est une application de prise de notes minimaliste pensée hors ligne d’abord, avec une synchronisation chiffrée de bout en bout
  • Forme de l’application et environnement d’usage

    • Disponible comme Progressive Web App dans le navigateur, sur desktop et sur mobile
    • Fonctionne sans Electron.js et prend en charge une installation optionnelle en un clic
    • Met en avant une conception axée sur la confidentialité et est proposée en open source sous licence MIT
  • Rédaction, migration et export

    • Prend en charge la rédaction en Markdown
    • Permet l’import depuis Google Keep, Apple Notes et Standard Notes
    • Les données des notes peuvent être exportées en un clic au format JSON
  • Synchronisation et extension

    • Via une inscription gratuite, les notes peuvent être sauvegardées dans le cloud sous une forme entièrement chiffrée et synchronisées entre plusieurs appareils
    • L’inscription ne nécessite ni adresse e-mail ni numéro de téléphone
    • Des options d’auto-hébergement et de cloud sont toutes deux proposées
    • L’API publique permet de créer son propre client

Méthodes d’installation selon le navigateur

  • Unforget peut être utilisé directement dans le navigateur, mais la méthode d’installation varie selon l’environnement
  • Installation prise en charge

    • Chrome : utiliser l’icône d’installation dans la barre d’URL
    • Edge : utiliser l’icône d’installation dans la barre d’URL
    • Android Browser : menu → Add to Home Screen
    • Safari Desktop : Share → Add to Dock
    • Safari iOS : Share → Add to Home Screen
    • Firefox Android : utiliser l’icône d’installation dans la barre d’URL
  • Limitation d’installation

    • Installation impossible sur Firefox Desktop

1 commentaires

 
GN⁺ 2024-06-13
Avis Hacker News
  • Je serais curieux d’avoir le retour d’expérience de quelqu’un qui a déjà créé une PWA offline-first
    L’idée d’utiliser le web uniquement comme moyen de distribution et le navigateur comme environnement d’exécution est séduisante, mais les petites contraintes pénibles du stockage local m’inquiètent
    Comme les données n’apparaissent pas sous la forme d’un fichier du type ~/.app/app.dat, on a cette impression de « hors de vue, hors de l’esprit », sans parler du risque qu’elles disparaissent soudainement à cause d’une mise à jour du navigateur, ni de la complexité de la gestion des versions de schéma dans le modèle de base du web
    La portabilité des données lors d’un passage vers un nouvel ordinateur pose aussi problème, et même si le fait de pouvoir déployer sans serveur avec juste un compte GitHub est attrayant, la partie données semble encore instable
    Même en laissant de côté l’absence de quelque chose comme SQLite, l’idée d’embarquer SQLite sous forme d’un gros bloc WebAssembly ne m’enthousiasme pas du tout

    • La stack web a effectivement beaucoup de petites contraintes pénibles, mais IndexedDB s’est montré assez stable jusqu’ici
      Il y a tout de même des limitations agaçantes, par exemple l’impossibilité de définir l’ordre croissant/décroissant pour chaque clé quand on crée des index multi-clés sur un stockage
      Si une PWA a été installée via l’ajout à l’écran d’accueil, le navigateur ne devrait pas effacer IndexedDB à cause d’une mise à jour ou autre, et en pratique les navigateurs semblent bien respecter cela
      Mon expérience du développement PWA a été globalement mitigée, et cela dépend beaucoup du type d’application. Pour une app de notes avec sauvegarde cloud chiffrée et synchronisation, une PWA peut être le meilleur choix, mais s’il faut une intégration plus profonde à la plateforme, comme l’accès au système de fichiers, j’éviterais la PWA
      Il y a aussi le problème d’iOS Safari, auquel il manque beaucoup de fonctionnalités PWA comme la synchronisation en arrière-plan ou les notifications push hors ligne, et il semble peu probable que cela soit pris en charge à l’avenir
      Je me demande si vous envisagez une PWA pour une application en particulier
    • Quiconque développe des applications dans le navigateur doit faire très attention au fait que de nombreux navigateurs peuvent supprimer une partie du stockage d’un site web quand l’espace disque vient à manquer
      C’est déjà agaçant en temps normal, mais sans sauvegarde côté serveur, cela dépasse largement le simple désagrément
      Je ne sais pas si cette mise en garde s’applique aussi à localStorage, mais d’après mon expérience c’était le cas pour IndexedDB, et cela semblait aussi arriver avec des apps Electron
    • À mon avis, le stockage hors ligne le plus sûr consiste à utiliser le système de fichiers du navigateur (https://developer.mozilla.org/en-US/docs/Web/API/File_System...) pour garder les données hors de portée du navigateur
      Ça fonctionne plutôt bien, mais l’inconvénient est que l’utilisateur doit re-sélectionner le fichier ou le répertoire à chaque utilisation de l’application, et qu’il n’existe aucun moyen de forcer le sélecteur de fichiers à s’ouvrir dans un répertoire précis autre qu’un « répertoire bien connu »
    • Dans les navigateurs basés sur Chromium, il est désormais possible de stocker les données dans un fichier du type ~/.app/app.dat
      Référence : https://developer.chrome.com/docs/capabilities/web-apis/file...
    • Cette application semble utiliser better-sqlite3[0] et stocker la base de données dans un fichier appelé private/unforget.db[1]
      Je n’ai pas d’expérience avec SQLite, donc je ne sais pas si ce fichier est aussi volatil que localStorage
      [0] https://www.npmjs.com/package/better-sqlite3
      [1] https://github.com/computing-den/unforget/blob/master/src/se...
  • Ça a l’air bien. Une suggestion : ce serait utile de montrer plus clairement le flux de rédaction des notes
    Pour l’instant, on ne comprend pas encore bien s’il s’agit de documents Markdown avec titre organisés dans une arborescence de dossiers, de « cartes » avec ou sans titre — éventuellement facultatif — classées par tags, ou d’un long document Markdown qu’on complète en continu
    Chacun de ces modèles correspond à des workflows proches de systèmes de prise de notes grand public, donc j’aimerais comprendre quel flux vous avez conçu et optimisé
    Le fait de savoir que vous avez commencé comme utilisateur de Google Keep aide, mais comme j’ai utilisé des fichiers texte Homebrew, Simplenote, Obsidian, etc., et que j’ai aussi une idée de ce que font Evernote ou OneNote, quelques repères supplémentaires sur le mode d’utilisation seraient bienvenus

    • Je n’avais pas vraiment réfléchi au fait que des gens puissent venir de systèmes différents reposant sur des concepts différents. Je vais mieux expliquer le workflow dans la note de démonstration
      Pour répondre rapidement : en général, je garde de très petites notes, de quelques lignes ou avec simplement des cases à cocher, avec une note par idée. Mais si une idée se développe sur plusieurs jours, la note peut devenir beaucoup plus grande, et il n’y a pas de limite de taille
      Comme en Markdown standard, on peut définir le titre d’une note avec #, et si on laisse une ligne vide après la première ligne, cette première ligne devient automatiquement le titre
      Il n’y a pas de notion distincte de tags, mais on peut écrire #someTag puis rechercher tel quel #someTag. La recherche n’est qu’une simple recherche de sous-chaîne partielle dans toutes les notes, sans fonctions avancées comme la racinisation
    1. Plus il y a de choix d’apps de notes auto-hébergeables, mieux c’est à mon avis
    2. Coquille sur la page de démo : PriavcyPrivacy
    3. Je me demande pourquoi, dans un navigateur, j’obtiens l’erreur « Your browser does not support service workers. Please use another browser. ». J’aimerais savoir s’il y a un contournement possible, ou si l’usage des service workers est indispensable à ce qui différencie cette app
    • Sans service worker, l’application ne fonctionne plus hors ligne, et c’est l’une de ses fonctionnalités principales
      Je me souviens avoir voulu prendre des notes dans Google Keep en voyage et avoir découvert que cela ne marchait parfois pas hors ligne
      Je me demande quel navigateur vous utilisez
    • Une autre petite coquille : GitHub falvoredGitHub flavored
  • Je me demande s’il est prévu d’intégrer quelque chose comme https://simplemde.com/ quand les notes deviennent plus lourdes
    Pour les notes contenant des tableaux, par exemple, je préfère un éditeur WYSIWYG plus simple plutôt que de devoir faire attention en permanence à la syntaxe Markdown

    • J’aimerais ajouter un éditeur WYSIWYG, mais lors des premiers tests je n’ai rien trouvé qui fonctionne bien sur toutes les plateformes
      Je vais aussi essayer cela
  • Beau travail, et j’espère que ça continuera à évoluer
    Ça m’a fait penser à Joplin, et je me demande dans quelle direction vous voulez emmener cette app

    • J’ai aussi essayé Joplin et je l’aime bien, mais il y avait quelques problèmes au-delà du fait que ce soit une app Electron
      Par exemple, le workflow ne me semblait pas assez rapide. Il faut pouvoir ouvrir l’app, faire au plus un tap, puis commencer immédiatement à saisir du texte, et pouvoir entrer plusieurs éléments de to-do sans passer par un menu ni appuyer sur d’autres boutons. Sur desktop, tout devrait de toute façon être centré sur le clavier
      En d’autres termes, je veux que l’UI ne gêne pas, et je pense que beaucoup d’apps de notes ratent ce point
      Côté orientation, j’aimerais faciliter la migration depuis d’autres apps. Il y a déjà l’import Google Keep, mais il en faudrait bien davantage
      Comme il existe une API publique, j’aimerais aussi voir apparaître des clients ou des intégrations pour Emacs, VS Code ou Vim
      À part cela, ça couvre déjà presque tous mes besoins actuels
  • Je suis toujours à la recherche d’un meilleur dépôt de connaissances structuré, et en temps normal j’évite les apps Electron ou le JavaScript desktop, mais c’est là que semblent sortir le plus d’expérimentations
    Puisqu’il s’agit d’une app JavaScript, je me demande si vous avez envisagé le support des diagrammes Mermaid. C’est lourd, mais si j’utilise Joplin pour mes notes en ce moment, c’est parce que la syntaxe Mermaid a changé la donne par rapport au simple Markdown
    https://mermaid.js.org/

  • J’ai récemment ressenti une frustration similaire avec les apps de notes Android, puis j’ai trouvé une app assez excellente que j’aimerais signaler
    C’est Zettel Notes[1], une app entièrement offline, avec plusieurs options de synchronisation, et les notes sont de simples fichiers Markdown stockés dans un répertoire
    [1] https://play.google.com/store/apps/details?id=org.eu.thedoc....

    • Zettel Notes mérite d’être recommandé. L’intégration Git avec SourceHut était un peu délicate, mais une fois configurée c’est excellent, et ça prend aussi en charge la plupart des fonctionnalités Org que j’utilise
  • Je cherche toujours une app de notes auto-hébergeable qui soit agréable à consulter à la fois sur mobile et sur desktop
    Je me demande si vous prévoyez un jour de distribuer un conteneur Docker

    • Si le déploiement devient plus simple, sortir un conteneur Docker me conviendrait aussi
  • Excellent. Je me demande si vous pourriez en dire plus sur l’app native
    Je cherche quelque chose de natif, léger et rapide, comme Apple Notes

    • Ce n’est pas une app native, mais une Progressive Web App (PWA)
      Je l’utilise directement depuis longtemps sur un vieil iPhone, et c’est léger et rapide
      Pour l’installer, il suffit d’aller dans Safari puis Partager → Ajouter à l’écran d’accueil
  • Je me demande ce que vous utilisez pour la synchronisation
    J’ai regardé plusieurs solutions CRDT, mais sans être certain de ce qu’il fallait choisir, et dans package.json je n’ai pas trouvé de bibliothèque de synchronisation ou de CRDT en particulier
    Si vous gérez la synchronisation vous-même, je me demande comment vous traitez les conflits

    • Ce n’est pas du CRDT, j’ai choisi quelque chose de bien plus simple
      if (a.modification_time > b.modification_time) ...
      C’est tout. Comme pour d’autres fonctionnalités, je comptais au départ implémenter du CRDT, mais j’ai réalisé en pratique que ça ne me manquerait pas
      Comme ce n’est pas un éditeur collaboratif où plusieurs utilisateurs modifient la même note, le CRDT n’est pas très utile
      À mon avis, dans une app de notes personnelle, le CRDT ne devient nécessaire que lorsque plusieurs appareils, tous hors ligne, modifient en même temps la même note