1个不稳定版本

0.1.0 2021年12月28日

#17#local-first

MIT 协议

62KB
1.5K SLoC

Rust 1K SLoC // 0.0% comments Dart 263 SLoC // 0.0% comments

本地优先SDK

License dependency status

PRs welcome commits contributors

哲学

没有云,它只是别人的电脑。

本地优先SDK提供了一套堆栈,可以在使用最先进的基于云的架构时,以高效的方式编写应用程序,同时提供本地优先软件的七个理想0 ——基本上是免费的。

  • 软件可以几乎即时响应用户输入。(无需等待服务器往返,无需加载动画)
  • 跨设备同步。(在您的笔记本电脑上停止的地方继续在您的移动设备上工作)
  • “离线优先”是本地优先的子集。(与应用程序交互时,连接性无关)
  • 与其他对等方的无缝协作。(无需担心冲突即可编辑和同步共享数据)
  • 完整的数据代理。(您可以对您的数据做您想做的,它只属于您)
  • 安全且私密的数据管理。(一切都被加密,只有您才有密钥)
  • 对应用程序数据的完全所有权和控制。(没有人可以从您那里夺走服务)

组件

本地优先SDK包括以下组件

  1. 用户和访问控制:... (密钥管理,acl)
  2. 多设备支持和协作:... (设备认证,p2p,对等发现(mdns和通过云对等方))
  3. 数据持久性 ... (云对等方或自托管)
  4. 多设备支持和互操作性 ... (浏览器,原生,android/ios?)

工件

本地优先SDK有三种风味

  1. 一个具有类型脚本绑定的有观点的JavaScript包,用于编写针对浏览器的本地优先应用程序。
  2. 一个可以嵌入到其他应用程序中的库,无论是作为Rust库还是与C兼容的FFI。
  3. 一个本地的永久进程,负责维护用户的数据。应用程序可以通过HTTP与这个守护进程接口。

本地优先JavaScript SDK

由于浏览器的API保证较弱,其环境必须被视为短暂[^1]。这就是为什么可选的云对等补充服务非常适用于浏览器环境(数据持久性,对等发现)。

目前,SDK仅提供为ES模块,需要异步导入

import * as localFirst from 'local-first';

await localFirst.init();

[..]

[^1]:最显著的是关于用户数据的持久性(密钥材料和应用程序数据)。然而,通过切换到另一个浏览器配置文件/容器等,很容易丢失浏览数据。


内部结构

Rust、libp2p、crdts、cambria、.. > 在此处插入奇妙之处 <–


许可协议

根据以下任一协议许可:

任选其一。

贡献

请保持尊重。请查阅我们的贡献指南以了解具体内容。根据 Apache-2.0 许可协议定义,您有意提交以供包含在作品中的任何贡献都应双许可如上所述,不附加任何额外条款或条件。

依赖关系

~23–38MB
~667K SLoC