go-ssb-room/docs/architecture.md

37 lines
1.3 KiB
Markdown

<!--
SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021
SPDX-License-Identifier: CC0-1.0
-->
# Architecture
## Invite flow
This implementation of Rooms 2.0 is compliant with the [Rooms 2.0
specification](https://github.com/ssbc/rooms2), but we add a few additional features
and pages in order to improve user experience when their SSB app does not support [SSB
URIs](https://github.com/ssbc/ssb-uri-spec).
A summary can be seen in the following chart:
![Chart](./images/invites-chart.png)
When the browser and operating system detects no support for opening SSB URIs, we redirect to a
fallback page which presents the user with two broad options: (1) install an SSB app that
supports SSB URIs, (2) link to another page where the user can manually input the user's SSB ID
in a form.
## Sign-in flow
This implementation is compliant with [SSB HTTP
Authentication](https://github.com/ssbc/ssb-http-auth-spec), but we add a few
additional features and pages in order to improve user experience. For instance, besides
conventional SSB HTTP Auth, we also render a QR code to sign-in with a remote SSB app (an SSB
identity not on the device that has the browser open). We also support sign-in with
username/password, what we call "fallback authentication".
A summary can be seen in the following chart:
![Chart](./images/login-chart.png)