Skip to content
/ webb Public

WIP Local-first App Framework

License

Notifications You must be signed in to change notification settings

A1Liu/webb

Repository files navigation

WIP App Framework

An app framework designed for building apps without a cloud or central source of truth. Takes local-first design ideas from Automerge, and some ideas about computation from Userland and Plan 9.

Strict design requirements:

  • Synchronize data across multiple devices and platforms, without a cloud server/central repository
  • Never interact with ANY cloud compute except as opt-in
  • Enable safe interaction with untrusted and partially-trusted devices
  • Be resilient against attacks from unauthorized actors
  • Enable direct sharing of device capabilities, e.g. compute, storage, camera
  • Make data encryption & protection easy

Strong design goals:

  • Behave reasonably well in low memory environments
  • Full functionality without ever having an internet connection
  • Support HSM, biometric auth, and other forms of hardware authentication/encryption
  • Adapt to changing capabilities (low battery, camera disabled, etc)
  • Enable hot-loading applications via iframe, window.postMessage (maybe allow something with WASM for server-ish workloads as well)
  • Lots of cross platform support: Android, iOS, desktop, browser plugin, server

Projects

  • Notes.md - A WIP notes app which implements synchronization over WebRTC and protects notes from spyware on untrusted devices. Being used as MVP app to iterate on framework designs.
  • Upcoming: Library app - A library/inventory management app
  • Upcoming: Browser extension - Add version of platform which integrates with Firefox, running e.g. WASM

Resources

IO

Auth

Debugging iOS

  • Some initial stuff - https://dev.to/adimac93/tauri-mobile-for-ios-4dp6
  • Had to search for node tauri ios in the generated files and change that to pnpm tauri ios
    • TODO: add an issue + repro in Tauri repo
  • Kept failing with various "provisioning profile" errors. Turns out, you need to choose the right device to target in the top bar of the xcode IDE. Once I did that, the UI automatically figured out everything else. That was 3 hours of investigation.
  • Got error sending request for url (http://192.IP_ADDRESS:3000/): error trying to connect: tcp connect error: No route to host (os error 65) - need to make sure the web server is running on 0.0.0.0 so that it's available to other devices on the wifi network
  • XCode runs a non-interactive non-login shell for its scripts, so for e.g. Zsh you need to ensure that setup is in .zshenv

Secure P2P Connection

Release

# Import environment variables
export $(xargs < release-env-vars)

# Run bundler command from the `/native` folder
npm run bundle

About

WIP Local-first App Framework

Resources

License

Stars

Watchers

Forks