Holi Labs
2 min Local-first

Crea un workspace del navegador que no atrape al usuario

Una arquitectura práctica para trabajar en una carpeta elegida o en un respaldo del navegador sin cambiar el flujo del editor.

#local-first #archivos #indexeddb
Contenido
Empieza con un solo contrato de workspace Adaptador A: carpeta elegida por la persona Adaptador B: workspace propiedad del navegador Cambia sin perder trabajo Añade una vía de recuperación Revisión de privacidad Checklist para publicar

Un editor local-first no debería obligar a entender el almacenamiento del navegador antes de crear algo. El flujo puede ser el mismo si los archivos viven en una carpeta elegida por la persona o en almacenamiento administrado por el navegador.

Empieza con un solo contrato de workspace

Entrega al editor una interfaz pequeña en lugar de acceso directo a cada API:

interface Workspace {
  list(path: string): Promise<Entry[]>;
  read(path: string): Promise<Uint8Array>;
  write(path: string, data: Uint8Array): Promise<void>;
  remove(path: string): Promise<void>;
}

La interfaz puede abrir, guardar, renombrar y previsualizar sin saber qué adaptador está activo.

Adaptador A: carpeta elegida por la persona

Usa File System Access cuando esté disponible y alguien seleccione una carpeta. Conserva el handle localmente, pero vuelve a pedir permiso cuando el navegador lo exija. Guardar un handle no significa tener permiso de lectura permanente.

Reglas importantes:

  • Abrir la carpeta debe ser una acción deliberada.
  • No explores fuera del directorio seleccionado.
  • Muestra el nombre de la carpeta activa y el estado del permiso.
  • Si se pierde el permiso, conserva el documento en memoria y ofrece una exportación de recuperación.

Adaptador B: workspace propiedad del navegador

Si no hay carpeta activa, crea el mismo árbol de proyecto en IndexedDB u OPFS. Es el workspace predeterminado, no un estado de error. Debe aceptar los mismos comandos que el adaptador de carpeta.

Una estructura inicial útil puede ser:

workspace/
  projects/
    welcome/
      main.typ
      images/
        sample.svg
  shared/
  exports/

Cambia sin perder trabajo

Cambiar de adaptador es una migración, no un simple toggle. Copia al destino, verifica cada archivo y sólo entonces marca el nuevo workspace como activo. Nunca borres el origen automáticamente.

Añade una vía de recuperación

El navegador o la persona pueden limpiar el almacenamiento. Un producto resistente necesita:

  1. Estado visible del workspace.
  2. Exportación de un proyecto o de todo el workspace.
  3. Importación que valide rutas antes de escribir.
  4. Advertencia antes de cambios grandes o irreversibles.

Revisión de privacidad

Ningún adaptador necesita servidor. La ruta elegida, nombres de archivo, handles y bytes de los documentos deben quedarse en el dispositivo. Al servir la aplicación el proveedor de hosting todavía recibe metadata de conexión como IP y horario de la solicitud, pero no el contenido local salvo que una función conectada lo envíe explícitamente.

Checklist para publicar

  • El editor funciona antes de tener cuenta o carpeta.
  • El permiso de carpeta tiene estados claros: solicitado, concedido y perdido.
  • Ambos adaptadores pasan las mismas pruebas de comportamiento.
  • La persona puede exportar antes de limpiar o migrar almacenamiento.
  • La inspección de red no muestra documentos ni nombres enviados durante la edición local.
Siguiente Diseña un código QR que sí se pueda escanear

Preferencias locales

Configuración

Estas preferencias se guardan únicamente en este navegador y no requieren una cuenta.

Apariencia

Tema Se aplica en este dispositivo

Navegación

Inicio Holi.tools Artículos
Sesión Sin cuenta · preferencia local

Actual v0.6.0

Versiones

Mantén Holi disponible

Apoya herramientas independientes

Las donaciones ayudan a cubrir alojamiento y desarrollo sin volver obligatorias las cuentas ni el almacenamiento remoto.

Contacto
v0.6.0 2026-09-02
  • Definidos Tutoriales, Notas de campo, Experimentos y Papers como formatos de una sola publicación Holi Labs
  • Añadida una colección Papers localizada con una grulla discreta en los siete idiomas
  • Añadidos filtros de formato y la identidad del ajolote conservando una sola biblioteca y shell de privacidad
v0.5.0 2026-09-02
  • Extendidos el shell, privacidad, búsqueda, filtros y rutas de artículos de Labs a los siete idiomas de Holi
  • Traducido el dock compartido y eliminado su brillo exterior inestable
  • Conservados bloques de código, URLs, rutas y nombres técnicos en los tutoriales traducidos
v0.4.0 2026-09-02
  • Labs fue rehecho como biblioteca práctica con lectura destacada, búsqueda, filtros y tiempo de lectura
  • Publicados siete tutoriales, guías y notas técnicas completos en español e inglés
  • Añadidas paletas clara y oscura coherentes y limitadas las rutas públicas a idiomas completos
v0.3.0 2026-09-02
  • Unificadas Configuración, Versiones y Privacidad en el dock compartido de Holi
  • Añadidas preferencias locales de tema e idioma y navegación de Labs
  • Integrados donaciones, soporte y Shadow Log dentro de Versiones
v0.2.1 2026-09-02
  • Separados privacidad y Version Log en controles flotantes
  • Movidos los datos de privacidad a un panel dedicado
v0.2.0 2026-09-02
  • Añadido un resumen visible de privacidad en artículos y tags
  • Disponible la versión y Shadow Log en todo Labs
  • Labs pasó de backlog a publicación de investigación
v0.1.1 2026-01-12
  • Añadidas rutas en español e inglés
  • Sincronizada la colección de contenido
  • Mejorada la estabilidad
v0.1.0 2026-01-12
  • Creada la primera colección de Labs
  • Publicadas las primeras notas de gráficos y rendimiento

Privacidad de un vistazo

Resumen de privacidad

Leer y exportar artículos no entrega archivos personales a Holi. Cloudflare puede conocer tu IP y horario.

Contenido
Labs publica artículos estáticos y no solicita tus documentos locales.
Exportación
Copiar resúmenes y generar Markdown o impresión ocurre en tu navegador.
Alojamiento
Cloudflare puede procesar IP, horario, ruta solicitada, volumen y datos de enrutamiento.
Enlaces externos
Donaciones, soporte y fuentes externas sólo se abren cuando tú las eliges.

Acerca de

Holi Labs

Tutoriales, notas de campo y guías técnicas para construir herramientas web útiles y local-first.

Explorar Holi.tools

Donar

Donar

Si Holi.tools te ayuda, puedes apoyar su desarrollo aquí:

GitHub Sponsors Ko-fi

Soporte y sugerencias

Soporte y sugerencias

Para soporte, reportar errores o enviar sugerencias:

Correo [email protected] GitHub Issues

Código fuente: https://github.com/HugoAndresAmayaChairez/holi.tools