3 Punkte von GN⁺ 2024-06-13 | 1 Kommentare | Auf WhatsApp teilen
  • Unforget ist eine minimalistische Notiz-App, bei der Notizen zunächst lokal erstellt und anschließend per verschlüsselter Synchronisierung weiterbearbeitet werden können; sie stellt Datenschutz und Nutzbarkeit über mehrere Geräte hinweg in den Vordergrund
  • Als Progressive Web App lässt sie sich im Browser, auf dem Desktop und auf Mobilgeräten nutzen und funktioniert ohne Electron.js
  • Sie bietet Schreiben in Markdown, One-Click-Export im JSON-Format, eine öffentliche API sowie Optionen für Self-Hosting und Cloud
  • Mit einer kostenlosen Registrierung lassen sich vollständig verschlüsselte Cloud-Backups und Synchronisierung nutzen; E-Mail-Adresse oder Telefonnummer sind nicht erforderlich
  • Der Import aus Google Keep, Apple Notes und Standard Notes wird unterstützt, Installation und Vorgehensweise unterscheiden sich jedoch je nach Browser

Offline-first-Notizen und Datenkontrolle

  • Unforget ist eine minimalistische Offline-first-App zum Schreiben von Notizen und bietet Ende-zu-Ende-verschlüsselte Synchronisierung
  • App-Form und Nutzungsumgebung

    • Als Progressive Web App kann sie im Browser, auf dem Desktop und auf Mobilgeräten genutzt werden
    • Sie funktioniert ohne Electron.js und unterstützt optional eine One-Click-Installation
    • Sie setzt auf ein Privacy-first-Design und ist als Open Source unter der MIT-Lizenz verfügbar
  • Schreiben, Migration und Export

    • Markdown-Schreiben wird unterstützt
    • Import aus Google Keep, Apple Notes und Standard Notes ist möglich
    • Notizdaten können im JSON-Format per One-Click-Export exportiert werden
  • Synchronisierung und Erweiterung

    • Über eine kostenlose Registrierung können Notizen vollständig verschlüsselt in der Cloud gesichert und über mehrere Geräte synchronisiert werden
    • Für die Registrierung ist keine E-Mail-Adresse oder Telefonnummer erforderlich
    • Es werden sowohl Self-Hosting- als auch Cloud-Optionen angeboten
    • Über eine öffentliche API lassen sich eigene Clients erstellen

Installationswege je nach Browser

  • Unforget kann direkt im Browser genutzt werden; die Installationsmethode variiert je nach Umgebung
  • Installationsunterstützung

    • Chrome: Installationssymbol in der URL-Leiste verwenden
    • Edge: Installationssymbol in der URL-Leiste verwenden
    • Android Browser: Menü → Add to Home Screen
    • Safari Desktop: Share → Add to Dock
    • Safari iOS: Share → Add to Home Screen
    • Firefox Android: Installationssymbol in der URL-Leiste verwenden
  • Installationseinschränkung

    • In Firefox Desktop kann es nicht installiert werden

1 Kommentare

 
GN⁺ 2024-06-13
Hacker-News-Kommentare
  • Mich würde interessieren, wie die Erfahrungen mit dem Bau einer offline-first PWA sind.
    Die Idee, das Web nur als Distributionsweg zu nutzen und den Browser als Laufzeitumgebung zu verwenden, ist attraktiv, aber die vielen kleinen Tücken des lokalen Speichers machen mir Sorgen.
    Da die Daten nicht als Datei wie ~/.app/app.dat sichtbar sind, entsteht ein Gefühl von „aus den Augen, aus dem Sinn“, und es beunruhigt mich auch, dass sie durch ein Browser-Update plötzlich verschwinden könnten sowie wie komplex die Schema-Versionierung im grundlegenden Web-Modell ist.
    Auch die Portabilität der Daten beim Umzug auf einen neuen Computer ist ein Problem. Dass man mit nur einem GitHub-Konto ohne Server deployen kann, ist zwar attraktiv, aber die Datenseite wirkt noch instabil.
    Selbst wenn man darüber hinwegsieht, dass es nichts wie SQLite gibt, sagt mir auch der Ansatz nicht zu, SQLite als WebAssembly-Paket einzubinden.

    • Im Web-Stack gibt es definitiv viele kleine Tücken, aber IndexedDB funktioniert schon seit geraumer Zeit ziemlich stabil.
      Es gibt allerdings lästige Einschränkungen, etwa dass man beim Anlegen von Indizes für einen Store mit mehreren Schlüsseln nicht für jeden Schlüssel aufsteigend/absteigend festlegen kann.
      Wenn eine PWA zum Startbildschirm hinzugefügt und damit installiert wurde, sollte der Browser IndexedDB nicht wegen Updates oder Ähnlichem löschen, und tatsächlich scheint es so, als hielten sich Browser daran.
      Meine Erfahrungen mit der PWA-Entwicklung waren insgesamt gemischt und hängen stark von der Art der App ab. Für eine Notiz-App mit verschlüsselten Cloud-Backups und Synchronisierung könnte eine PWA die beste Wahl sein, aber wenn tiefere Plattform-Integration wie Dateisystemzugriff nötig ist, würde ich PWAs meiden.
      Ein weiteres Problem ist iOS Safari, wo viele PWA-Funktionen wie Hintergrundsynchronisierung oder Offline-Push-Benachrichtigungen fehlen und es auch künftig unwahrscheinlich wirkt, dass sie unterstützt werden.
      Mich würde interessieren, ob du eine PWA für eine bestimmte App in Betracht ziehst.
    • Wer Apps im Browser baut, muss extrem vorsichtig sein, weil viele Browser bei knappem Speicherplatz Teile des Website-Speichers verwerfen können.
      Schon im Normalfall ist das ein ärgerliches Verhalten, aber ohne serverseitige Backups geht das weit über bloßen Ärger hinaus.
      Ich bin nicht sicher, ob diese Warnung auch für localStorage gilt, aber meiner Erfahrung nach gilt sie für IndexedDB, und bei Electron-Apps schien es ebenfalls so zu sein.
    • Der sicherste Offline-Speicher ist meiner Meinung nach, das Browser-Dateisystem zu nutzen (https://developer.mozilla.org/en-US/docs/Web/API/File_System...) und die Daten damit außerhalb der Kontrolle des Browsers zu halten.
      Das funktioniert ziemlich gut, aber der Nachteil ist, dass der Nutzer bei jeder Verwendung der App Datei oder Verzeichnis erneut auswählen muss und es keine Möglichkeit gibt, den Dateiauswahldialog zum Start in einem bestimmten Verzeichnis außerhalb der „well-known directories“ zu zwingen.
    • In Chromium-basierten Browsern ist es inzwischen möglich, Daten in einer Datei wie ~/.app/app.dat abzulegen.
      Siehe: https://developer.chrome.com/docs/capabilities/web-apis/file...
    • Diese App scheint better-sqlite3[0] zu verwenden und die Datenbank in einer Datei namens private/unforget.db[1] zu speichern.
      Ich habe keine Erfahrung mit SQLite, daher weiß ich nicht, ob diese Datei genauso flüchtig ist wie localStorage.
      [0] https://www.npmjs.com/package/better-sqlite3
      [1] https://github.com/computing-den/unforget/blob/master/src/se...
  • Sieht gut aus. Ein Vorschlag wäre, den Ablauf beim Schreiben von Notizen klarer zu zeigen.
    Noch ist nicht eindeutig, ob es sich um Markdown-Dokumente mit Titel handelt, die in Ordnern bzw. Hierarchien organisiert sind, ob es eher titelose oder optional betitelte „Karten“ sind, die per Tags geordnet werden, oder ob es ein langes, fortlaufend erweitertes Markdown-Dokument ist.
    Jede dieser Varianten ähnelt Workflows bekannter Notizsysteme, deshalb würde ich gern verstehen, welchen Ablauf ihr entworfen und optimiert habt.
    Der Hinweis, dass es mit Google Keep begann, hilft, aber ich habe Homebrew-Textdateien, Simplenote, Obsidian usw. genutzt und habe auch ein grobes Verständnis von Evernote und OneNote, daher wären ein paar mehr Wegweiser zur Nutzung hilfreich.

    • Ich habe tatsächlich nicht ausreichend bedacht, dass Leute aus anderen Systemen mit ganz anderen Konzepten wechseln könnten. Ich werde den Workflow in den Demo-Notizen besser erklären.
      Kurz gesagt halte ich normalerweise sehr kleine Notizen mit nur ein paar Zeilen oder einer To-do-Checkbox, und pro Idee gibt es eine Notiz. Wenn sich eine Idee aber über mehrere Tage weiterentwickelt, kann diese Notiz deutlich größer werden; eine Größenbeschränkung für Notizen gibt es nicht.
      Wie in normalem Markdown kann man mit # einen Notiztitel festlegen, und wenn man nach der ersten Zeile eine Leerzeile setzt, wird die erste Zeile automatisch zum Titel.
      Ein eigenes Tag-Konzept gibt es nicht, aber man kann #someTag schreiben und dann einfach nach #someTag suchen. Die Suche ist eine einfache Teilstring-Suche über alle Notizen hinweg, ohne fortgeschrittene Funktionen wie Stemming.
    1. Ich finde: Je mehr Optionen es für selbst betreibbare Notiz-Apps gibt, desto besser.
    2. Tippfehler auf der Demo-Seite: PriavcyPrivacy
    3. Mich würde interessieren, warum in einem Browser der Fehler „Your browser does not support service workers. Please use another browser.“ erscheint. Gibt es einen Workaround, oder ist die Verwendung von Service Workern essenziell für das Alleinstellungsmerkmal dieser App?
    • Ohne Service Worker funktioniert die App nicht mehr offline, und das ist eines der Kernfeatures.
      Ich erinnere mich, dass ich auf Reisen manchmal etwas in Google Keep notieren wollte und dann gemerkt habe, dass es offline nicht funktionierte.
      Mich würde interessieren, welchen Browser du verwendest.
    • Noch ein kleiner Tippfehler: GitHub falvoredGitHub flavored
  • Ich frage mich, ob geplant ist, bei umfangreicher werdenden Notizen etwas wie https://simplemde.com/ zu integrieren
    Bei Notizen mit Tabellen usw. würde ich einen einfacheren WYSIWYG-Editor bevorzugen, statt ständig auf die Markdown-Syntax achten zu müssen

    • Ich würde gern einen WYSIWYG-Editor einbauen, habe in ersten Tests aber keinen gefunden, der auf allen Plattformen gut funktioniert
      Ich werde das aber noch einmal versuchen
  • Tolle Arbeit, und ich hoffe, dass sich das Projekt weiterentwickelt
    Es hat mich an Joplin erinnert, und ich frage mich, in welche Richtung du diese App entwickeln willst

    • Ich habe Joplin auch benutzt und mag es ziemlich gern, aber es gab ein paar Probleme damit, nicht nur dass es eine Electron-App ist
      Zum Beispiel fühlte sich der Workflow nicht schnell genug an. Man sollte die App öffnen, höchstens einmal tippen und dann sofort losschreiben können, und mehrere To-do-Einträge erfassen können, ohne in Menüs zu gehen oder andere Buttons zu drücken. Auf dem Desktop sollte ohnehin alles vollständig tastaturzentriert sein
      Anders gesagt möchte ich, dass die UI nicht im Weg steht, und ich finde, dass viele Notiz-Apps genau das verfehlen
      Von der Ausrichtung her möchte ich es einfacher machen, von anderen Apps zu migrieren. Es gibt bereits einen Import aus Google Keep, aber es sollte noch viel mehr geben
      Da es eine öffentliche API gibt, wäre es schön, wenn auch Emacs-, VS Code- oder Vim-Clients bzw. Integrationen entstünden
      Abgesehen davon deckt es im Moment fast alle meine Bedürfnisse ab
  • Ich bin immer auf der Suche nach einem besseren strukturierten Wissensspeicher, und obwohl ich Electron-Apps oder Desktop-JavaScript normalerweise meide, scheint dort die meiste Experimentierfreude stattzufinden
    Falls es eine JavaScript-App ist, frage ich mich, ob Unterstützung für Mermaid-Diagramme in Betracht gezogen wurde. Auch wenn es schwergewichtig ist: Der Grund, warum ich Joplin derzeit für Notizen nutze, ist, dass die Mermaid-Syntax im Vergleich zu einfachem Markdown ein echter Gamechanger war
    https://mermaid.js.org/

  • Ich habe mich zuletzt über Android-Notiz-Apps ähnlich frustriert gefühlt und möchte eine ziemlich großartige App empfehlen
    Sie heißt Zettel Notes[1], ist vollständig offline, unterstützt mehrere Synchronisierungsoptionen, und die Notizen sind einfache Markdown-Dateien, die in einem Verzeichnis gespeichert werden
    [1] https://play.google.com/store/apps/details?id=org.eu.thedoc....

    • Zettel Notes ist definitiv empfehlenswert. Die Git-Integration mit SourceHut war etwas knifflig, aber wenn sie einmal eingerichtet ist, funktioniert sie hervorragend, und die meisten Org-Funktionen, die ich nutze, werden ebenfalls unterstützt
  • Ich suche immer nach einer Notiz-App, die Self-Hosting ermöglicht und sowohl mobil als auch auf dem Desktop gut aussieht
    Ich frage mich, ob es irgendwann Pläne gibt, einen Docker-Container bereitzustellen

    • Wenn das Deployment einfacher wird, wäre es in Ordnung, auch einen Docker-Container anzubieten
  • Großartig. Ich würde gern mehr über die native App erfahren
    Ich suche etwas Natives, Leichtes und Schnelles wie Apple Notes

    • Es ist keine native App, sondern eine Progressive Web App (PWA)
      Ich nutze sie selbst schon lange direkt auf einem älteren iPhone, und sie ist leicht und schnell
      Zum Installieren einfach in Safari auf Teilen → Zum Home-Bildschirm gehen
  • Ich frage mich, was für die Synchronisierung verwendet wird
    Ich habe mir verschiedene CRDT-Lösungen angesehen, war mir aber nie sicher, was ich verwenden sollte, und in package.json konnte ich keine bestimmte CRDT- oder Sync-Bibliothek finden
    Falls die Synchronisierung selbst implementiert ist, würde mich interessieren, wie Konflikte behandelt werden

    • Es ist kein CRDT, ich habe mich für einen viel einfacheren Ansatz entschieden
      if (a.modification_time > b.modification_time) ...
      Das ist alles. Wie bei anderen Funktionen wollte ich ursprünglich CRDT implementieren, habe dann aber gemerkt, dass ich es in der Praxis nicht vermisse
      Da es kein kollaborativer Editor ist, in dem mehrere Nutzer dieselbe Notiz bearbeiten, ist CRDT nicht besonders nützlich
      Ich denke, in einer persönlichen Notiz-App wird CRDT nur dann wirklich nötig, wenn mehrere Geräte offline sind und dieselbe Notiz gleichzeitig bearbeiten