0 purchases
tlfs
The Local-First SDK #
Philosophy #
There is no cloud, it's just someone else's computer.
The Local-First SDK offers a stack to write applications as productively as when
using state-of-the-art cloud-based architectures, while providing the Seven
Ideals for Local-First Software 0 -- basically for free:
Software can respond near-instantaneously to user input.
(No waiting on server round-trips, no spinners.)
Cross-device synchronization.
(Pick up work on your mobile device just where you left off with your laptop.)
"Offline-First" as a subset of Local-First.
(Connectivity is irrelevant when interacting with the application>0
Seamless collaboration with other peers.
(Edit and sync shared data without fear of conflicts.)
Full data agency.
(Do what you want with your data, it's yours only.)
Secure and private data management.
(Everything is encrypted, only you have the keys.)
Full ownership and control over the application's data.
(No one can take away a service from you.)
Components #
The Local-First SDK comprises the following components:
User and Access Control:
... (key management, acl)
Multi-Device Support and Collaboration:
... (device auth, p2p, peer discovery (mdns and via cloud peer))
Data Persistence
... (cloud peer or self-hosted)
Multi device support and interoperability
... (browser, native, android/ios?)
Artifacts #
The Local-First SDK comes in three flavours:
An opinionated Javascript package (with Typescript bindings) to write
Local-First applications targeting the browser.
A library which can be embedded into other applications, either as a rust
library or a C-compatible FFI.
A native, permanent process shepherding the user's data. Applications can
interface with this daemon via HTTP.
The Local-First Javascript SDK #
As the browser's API guarantees are weak, its environment has to be considered
ephemeral1. This is why the optional Cloud-Peer supplemental services
complement the browser environment very well (data persistence, peer discovery).
As of now, the SDK is just offered as an ES module, requiring asynchronous
import:
import * as localFirst from 'local-first';
await localFirst.init();
copied to clipboard
[..]
Under the hood #
Rust, libp2p, crdts, cambria, ..
--> INSERT AWESOMENESS HERE <--
License #
Licensed under either of
Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contributing #
Be respectful. Check out our Contribution Guidelines for
specifics.
Any contribution intentionally submitted for inclusion in the work by you, as
defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.