Lancement sur HN : Unforget, une app de notes hors ligne d’abord et chiffrée
(unforget.computing-den.com)- 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
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 webLa 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
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
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Ç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 »
~/.app/app.datRéférence : https://developer.chrome.com/docs/capabilities/web-apis/file...
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
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 titreIl n’y a pas de notion distincte de tags, mais on peut écrire
#someTagpuis 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 racinisationPriavcy→PrivacyJe 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
GitHub falvored→GitHub flavoredJe 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
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
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....
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
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
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.jsonje n’ai pas trouvé de bibliothèque de synchronisation ou de CRDT en particulierSi vous gérez la synchronisation vous-même, je me demande comment vous traitez les conflits
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