HN muestra: Unforget, app de notas offline-first y cifrada
(unforget.computing-den.com)- Unforget es una app minimalista de notas que permite escribir primero de forma local y continuar con sincronización cifrada, destacando tanto la privacidad como la usabilidad entre dispositivos
- Al ser una Progressive Web App, puede usarse en navegador, escritorio y móvil, y funciona sin Electron.js
- Ofrece escritura en Markdown, exportación con un clic en formato JSON, API pública, y opciones de autohospedaje y nube
- Con el registro gratuito se pueden usar copias de seguridad y sincronización en la nube completamente cifradas, y no requiere correo electrónico ni número de teléfono
- Permite importar desde Google Keep, Apple Notes y Standard Notes, pero la disponibilidad y el método de instalación varían según el navegador
Notas offline-first y control de datos
- Unforget es una app minimalista de notas offline-first que ofrece sincronización cifrada de extremo a extremo
-
Formato de la app y entornos de uso
- Como Progressive Web App, puede usarse en navegador, escritorio y móvil
- Funciona sin Electron.js y admite instalación opcional con un clic
- Promueve un diseño centrado en la privacidad y se ofrece como open source bajo licencia MIT
-
Escritura, migración y exportación
- Admite escritura en Markdown
- Permite importar desde Google Keep, Apple Notes y Standard Notes
- Los datos de las notas pueden exportarse con un clic en formato JSON
-
Sincronización y extensión
- Mediante registro gratuito, las notas pueden respaldarse en la nube en estado completamente cifrado y sincronizarse entre varios dispositivos
- El registro no requiere correo electrónico ni número de teléfono
- Ofrece tanto autohospedaje como opciones en la nube
- La API pública permite crear clientes propios
Métodos de instalación por navegador
- Unforget puede usarse directamente desde el navegador, y el método de instalación varía según el entorno
-
Soporte de instalación
- Chrome: usar el ícono de instalación en la barra de URL
- Edge: usar el ícono de instalación en la barra de URL
- Android Browser: menú → Add to Home Screen
- Safari Desktop: Share → Add to Dock
- Safari iOS: Share → Add to Home Screen
- Firefox Android: usar el ícono de instalación en la barra de URL
-
Limitaciones de instalación
- No puede instalarse en Firefox Desktop
1 comentarios
Opiniones en Hacker News
Me da curiosidad la experiencia de haber creado una PWA offline-first
La idea de usar la web solo como medio de distribución y el navegador como entorno de ejecución es atractiva, pero me preocupan las pequeñas complicaciones del almacenamiento local
Como los datos no se ven como un archivo tipo
~/.app/app.dat, da la sensación de “si no está a la vista, se olvida”, y también preocupa la posibilidad de que desaparezcan de pronto por una actualización del navegador, además de la complejidad de manejar el versionado de esquemas en el modelo básico de la webLa portabilidad de los datos al cambiar a una computadora nueva también es un problema; que se pueda desplegar sin servidor con solo una cuenta de GitHub es atractivo, pero la parte de datos todavía parece inestable
Dejando de lado que no haya algo como SQLite, tampoco me convence mucho la idea de empaquetar SQLite como un bloque de WebAssembly
Aun así, tiene limitaciones molestas, como no poder especificar orden ascendente/descendente para cada clave al crear índices en un almacén con varias claves
Si instalaste una PWA agregándola a la pantalla de inicio, el navegador no debería borrar IndexedDB por motivos como una actualización, y en la práctica parece que los navegadores respetan eso
La experiencia desarrollando PWA en general ha sido mixta y depende mucho del tipo de app. Para una app de notas con respaldo cifrado en la nube y sincronización, una PWA podría ser la mejor opción, pero si se necesita una integración más profunda con la plataforma, como acceso al sistema de archivos, evitaría una PWA
Otro problema es iOS Safari, que carece de muchas funciones de PWA como sincronización en segundo plano o notificaciones push offline, y parece poco probable que las soporte en el futuro
Me da curiosidad si estás considerando una PWA para alguna app en particular
Ya es un comportamiento molesto de por sí, pero si no hay respaldo del lado del servidor, pasa de ser una simple molestia a algo más serio
No estoy seguro de si esta advertencia también aplica a
localStorage, pero por experiencia sí aplicó a IndexedDB, y también pareció ocurrir en apps ElectronFunciona bastante bien, pero la desventaja es que el usuario tiene que volver a seleccionar el archivo o directorio cada vez que usa la app, y no hay forma de obligar al selector de archivos a empezar en un directorio específico que no sea uno de los “directorios conocidos”
~/.app/app.datReferencia: https://developer.chrome.com/docs/capabilities/web-apis/file...
better-sqlite3[0] y guardar la base de datos en un archivo llamadoprivate/unforget.db[1]No tengo experiencia con SQLite, así que no sé si ese archivo es tan volátil como
localStorage[0] https://www.npmjs.com/package/better-sqlite3
[1] https://github.com/computing-den/unforget/blob/master/src/se...
Se ve bien. Una sugerencia: sería bueno mostrar con más claridad el flujo de creación de notas
Todavía no queda claro si se trata de documentos Markdown con título organizados en carpetas/jerarquías, de “tarjetas” sin título o con título opcional organizadas con etiquetas, o de un documento Markdown largo al que se le va agregando contenido continuamente
Cada una de esas opciones se parece a flujos de trabajo de sistemas de notas populares, así que me gustaría entender qué flujo diseñaron y optimizaron
La pista de que empezaste como usuario de Google Keep ayuda, pero he usado archivos de texto con Homebrew, Simplenote, Obsidian, etc., y también tengo cierta idea de Evernote u OneNote, así que agradecería algunas señales más sobre la forma de uso
Como respuesta rápida: normalmente mantengo notas muy pequeñas, de unas pocas líneas o con casillas de tareas, y tengo una nota por idea. Eso sí, si una idea crece durante varios días, esa nota también puede volverse mucho más grande, y no hay límite de tamaño para las notas
Como en Markdown estándar, se puede definir el título de la nota con
#, y si dejas una línea en blanco después de la primera línea, la primera línea se convierte automáticamente en el títuloNo hay un concepto separado de etiquetas, pero puedes escribir
#someTagy luego buscar literalmente#someTag. La búsqueda es una búsqueda simple de subcadenas en todas las notas, sin funciones avanzadas como stemmingPriavcy→PrivacyRecuerdo que, estando de viaje, a veces intentaba tomar notas en Google Keep y descubría que no funcionaba offline
Me da curiosidad qué navegador usas
GitHub falvored→GitHub flavoredMe pregunto si tienen planes de integrar algo como https://simplemde.com/ cuando las notas se vuelvan más pesadas.
Para notas con tablas y cosas así, prefiero un editor WYSIWYG más simple en lugar de estar pendiente todo el tiempo de la sintaxis Markdown.
También voy a intentar eso.
Gran trabajo; espero que siga evolucionando.
Me recordó a Joplin, y me da curiosidad hacia dónde quieren llevar esta app.
Por ejemplo, el flujo de trabajo no se sentía lo suficientemente rápido. Debería poder abrir la app, tocar como mucho una vez y empezar a escribir de inmediato, y poder ingresar varios elementos de tareas sin ir a un menú ni presionar otro botón. En escritorio, de todos modos todo debería estar centrado en el teclado.
En otras palabras, quiero que la UI no estorbe, y creo que muchas apps de notas fallan en eso.
En cuanto a la dirección, quiero facilitar la migración desde otras apps. Ya existe la importación desde Google Keep, pero debería haber muchas más.
Como hay una API pública, también estaría bueno que aparecieran clientes o integraciones para Emacs, VS Code y Vim.
Fuera de eso, actualmente cubre casi todas mis necesidades.
Siempre estoy buscando un mejor repositorio de conocimiento estructurado, y normalmente evito las apps Electron o JavaScript de escritorio, pero parece que la mayor parte de la experimentación viene de ahí.
Si es una app JavaScript, me pregunto si han considerado soporte para diagramas Mermaid. Aunque es pesado, últimamente uso Joplin para tomar notas porque la sintaxis Mermaid cambió las reglas del juego frente al Markdown simple.
https://mermaid.js.org/
Últimamente sentía una frustración similar con las apps de notas para Android, hasta que encontré una bastante buena y quería mencionarla.
Se llama Zettel Notes[1], es completamente offline, admite varias opciones de sincronización y las notas son simples archivos Markdown guardados en directorios.
[1] https://play.google.com/store/apps/details?id=org.eu.thedoc....
Siempre estoy buscando una app de notas que pueda autoalojarse y que se vea bien tanto en móvil como en escritorio.
Me pregunto si en algún momento tienen pensado publicar un contenedor Docker.
Excelente. Me gustaría saber más sobre las apps nativas.
Estoy buscando algo nativo, liviano y rápido, como Apple Notes.
La he usado durante mucho tiempo directamente en un iPhone viejo y es liviana y rápida.
Para instalarla, en Safari hay que ir a Compartir → Agregar a pantalla de inicio.
Me pregunto qué usan para la sincronización.
Estuve mirando varias soluciones CRDT, pero no estaba seguro de cuál usar, y en
package.jsonno encontré ninguna biblioteca específica de CRDT o sincronización.Si la sincronización la hacen ustedes mismos, me pregunto cómo manejan los conflictos.
if (a.modification_time > b.modification_time) ...Eso es todo. Como con otras funciones, originalmente pensaba implementar CRDT, pero me di cuenta de que en la práctica no lo echo de menos.
Como no es un editor colaborativo donde varios usuarios editan la misma nota, CRDT no es tan útil.
Creo que en una app de notas personal, CRDT solo se vuelve necesario cuando varios dispositivos están todos offline y editan la misma nota al mismo tiempo.