Reaching Application
This component is a single-page web application built with Gleam and Lustre that allows individuals (“Reaching Users” or “Reaching Parties”) to establish safe, anonymous, end-to-end encrypted communication channels with trusted “Reachable Peers” through the Reach protocol.
It is designed for scenarios where users cannot afford to persist sensitive state on their devices and wish to remain indistinguishable from one another even from the server’s perspective.
Note
This is pre-alpha software, and not yet fit for serious use. This documentation is written in the spirit of Readme Driven Development.
UX Goals
- Provides guidance to make mistakes unlikely
- Reduces cognitive load to focus on what matters the most
- Avoids jargon as much as possible
- Explains the process rather than assumes users are already familiar with what is a complex system
Development
Once you set up the Reach development environment, a hot-reloading development server can be started with:
just start-reaching-app-dev
This command builds a Reachable Server Node that hosts the Reaching Application and Reach protocol endpoint, along with the Reaching Link Wasm library. It will automatically hot-reload whenever changes are made to Gleam code, associated JavaScript files, or any of the other aforementioned component’s source files.
Implementation choices
A non-exhaustive list of guiding principles that inform how we design and maintain the Reaching Application:
-
Made in compliance with broadly adopted web standards
-
Uses a single message based FFI to interact with Reaching Link, a Wasm library written in Rust to perform necessary cryptographic operations
-
Fully internationalized, using Fluent
-
Implements a flavor of atomic CSS
-
Works offline when that’s meaningful