Verified Commit 01c18373 authored by Aral Balkan's avatar Aral Balkan
Browse files

Add design section

parent 2f41d4bc
+++
title = "Design"
weight = "10"
+++
The Indienet Engine is a loosely-coupled ActivityPub component in JavaScript that handles the following features via REST and WebSocket APIs and a realtime RethinkDB database (see [technology stack](../technology-stack)):
* [ ] Authentication
* [ ] Server-to-server interactions
* [ ] Client-to-server interactions
{{<mermaid align="left">}}
sequenceDiagram
participant A as AP Server
participant B as Engine
participant C as Database
participant D as AP Server
participant E as Client
A->>B: delivery
B->>C: persistence
B->>D: delivery
D->>B: delivery
E->>B: publickey authentication request
B->>E: Authentication OK (JWT token)
E->>B: new message
B->>C: persistence
C->>B: event
B->>A: delivery
B->>D: delivery
B->>E: delivery
{{< /mermaid >}}
+++
title = "Security"
weight = "20"
weight = "30"
+++
Indienet apps based on Indienet Engine are hosted on a server and accessed through clients. The default client is a web client that is, itself, served by the server.
......@@ -21,7 +21,7 @@ Just like any web app, this means that we must trust the host not to:
1. Add a back door to the source and serve a malicious client (with which they could, for example, capture your password, etc.)
2. Not to update to a malicious version sometime in the future (a web server could serve you a different client on each connection)
While these issues are blatantly apparent for web clients, they are also faced by native apps today in a world of App Stores and automatic updates.
While these issues are blatantly apparent for web clients, they are also faced by native apps today in a world of App Stores and automatic updates.
## Resources
......
+++
title = "Technology Stack"
weight = "10"
weight = "20"
+++
Indienet Engine is an implementation of the ActivityPub [protocol](protocol/) written in the JavaScript (ES6) [language](language/). It runs on a Node.js [server](server/) and is built using the FeathersJS [framework](framework/) and a RethinkDB [database](database/). It exposes websocket and REST [interfaces](interfaces/) and implements publickey and JWT [authentication](authentication/).
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment