1 个不稳定版本

0.1.0 2021 年 12 月 28 日

#18#local-first

MIT 许可证

225KB
5.5K SLoC

本地优先 SDK

License dependency status

PRs welcome commits contributors

理念

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

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

  • 软件可以近乎即时地响应用户输入。 (无需等待服务器往返,无需加载动画.)
  • 跨设备同步。 (在您的笔记本电脑上继续使用您的移动设备上停止的工作.)
  • "离线优先"作为本地优先的一个子集。 (与应用程序的交互时,连接性无关紧要.)
  • 与其他对等方的无缝协作。 (无需担心冲突即可编辑和同步共享数据.)
  • 完整数据代理权。(您可以对您的数据进行您想要的任何操作,它只属于您.)
  • 安全和私密的数据管理。(所有数据都进行了加密,只有您才有密钥.)
  • 对应用程序数据的完全拥有权和控制权。(没有人可以夺取您服务的权利.)

组件

Local-First SDK 包含以下组件

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

工件

Local-First SDK 有三种版本

  1. 一个面向浏览器的本地优先应用程序的 JavaScript 包(带有 TypeScript 绑定)。
  2. 可以嵌入到其他应用程序中的库,可以是 Rust 库或与 C 兼容的 FFI。
  3. 一个本地、永久的进程,用于保护用户的数据。应用程序可以通过 HTTP 与此守护进程进行交互。

Local-First JavaScript SDK

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

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

import * as localFirst from 'local-first';

await localFirst.init();

[..]

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


底层

Rust, libp2p, crdts, cambria, .. --> 在此处插入奇妙之处 <--


许可证

根据以下任一许可证授权:

任选其一。

贡献

请尊重他人。有关具体细节,请参阅我们的贡献指南。您有意提交以供包含在作品中的任何贡献,根据Apache-2.0许可证定义,应如上双授权,无需任何额外条款或条件。

依赖项

约14MB
约264K SLoC