diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 5b89412..ea292f1 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -7,9 +7,9 @@ - [Software](./chapter_3.md) - [Operating System](./chapter_3_1.md) - [Microservices](./chapter_3_2.md) - - [Configuration](./chapter_3_3.md) - - [Interfaces](./chapter_3_4.md) - - [Physical Interface](./chapter_3_4_1.md) - - [Web Interface](./chapter_3_4_2.md) + - [Interfaces](./chapter_3_3.md) + - [Physical Interface](./chapter_3_3_1.md) + - [Web Interface](./chapter_3_3_2.md) + - [Configuration](./chapter_3_4.md) - [Contributor's Guide](./chapter_4.md) - [Licensing](./chapter_5.md) diff --git a/src/chapter_1.md b/src/chapter_1.md index e10b99d..497a6cd 100644 --- a/src/chapter_1.md +++ b/src/chapter_1.md @@ -1 +1,3 @@ # Introduction + +PeachCloud is a low-power, lightweight hardware device designed to facilitate peer-to-peer communication across social networks. We aim to return (cloud) computing back into our homes and local communities in a way which fosters increased trust in one another and the socio-technical systems we inhabit. diff --git a/src/chapter_3_1.md b/src/chapter_3_1.md index 6e9da66..b039d95 100644 --- a/src/chapter_3_1.md +++ b/src/chapter_3_1.md @@ -1 +1,3 @@ # Operating System + +PeachCloud runs an _unofficial_ [preview image](https://people.debian.org/~gwolf/raspberrypi3/20190628/) of Debian 10 (Buster). Kernel version: 4.19.0-5-arm64. diff --git a/src/chapter_3_2.md b/src/chapter_3_2.md index 494eb57..680d3f0 100644 --- a/src/chapter_3_2.md +++ b/src/chapter_3_2.md @@ -1 +1,16 @@ # Microservices + +PeachCloud is built primarily with a [microservices architecture](https://microservices.io/). Each microservice utilises [JSON-RPC](https://www.jsonrpc.org/specification) - a stateless, light-weight remote procedure call protocol - as a means of exposing functionality and allowing interoperability. This approach produces a collection of services which are highly maintainable and testable, loosely coupled and independently deployable. HTTP and WebSockets are used as transports for the microservices. + +The suite of PeachCloud microservices currently includes: + + - [peach-buttons](https://github.com/peachcloud/peach-buttons) + - poll GPIO pins for button presses and emit events via pub-sub + - [peach-menu](https://github.com/peachcloud/peach-menu) + - monitor and interact with the device via the physical interface + - [peach-network](https://github.com/peachcloud/peach-network) + - query and configure network interfaces + - [peach-oled](https://github.com/peachcloud/peach-oled) + - write and draw to the OLED display + - [peach-stats](https://github.com/peachcloud/peach-menu) + - query system statistics diff --git a/src/chapter_3_3.md b/src/chapter_3_3.md index a025a48..89ce18f 100644 --- a/src/chapter_3_3.md +++ b/src/chapter_3_3.md @@ -1 +1 @@ -# Configuration +# Interfaces diff --git a/src/chapter_3_3_1.md b/src/chapter_3_3_1.md new file mode 100644 index 0000000..2363c47 --- /dev/null +++ b/src/chapter_3_3_1.md @@ -0,0 +1 @@ +# Physical Interface diff --git a/src/chapter_3_3_2.md b/src/chapter_3_3_2.md new file mode 100644 index 0000000..326dd66 --- /dev/null +++ b/src/chapter_3_3_2.md @@ -0,0 +1,7 @@ +# Web Interface + +[peach-web](https://github.com/peachcloud/peach-web) provides a web interface for monitoring and interacting with the PeachCloud device. This allows administration of the single-board computer (ie. Raspberry Pi) running PeachCloud, as well as the ssb-server and related plugins. + +**Stack** + +The peach-web stack currently consists of [Rocket](https://rocket.rs/) (Rust web framework), [Tera](https://tera.netlify.com/docs/installation/) (Rust template engine inspired by Jinja2 and the Django template language) and [Tachyons](https://tachyons.io/) (functional CSS library for humans). diff --git a/src/chapter_3_4.md b/src/chapter_3_4.md index 89ce18f..7b3736d 100644 --- a/src/chapter_3_4.md +++ b/src/chapter_3_4.md @@ -1 +1,13 @@ -# Interfaces +# Configuration + +The microservices and other components comprising the PeachCloud software are configurable via the following environment variables: + +| Microservice | Variable | Description | Default | +| --- | --- | --- | --- | +| peach-network | `PEACH_NETWORK_SERVER` | HTTP server address and port for JSON-RPC | `127.0.0.1:5110` | +| peach-buttons | `PEACH_BUTTONS_SERVER` | WebSocket server address and port for JSON-RPC | `127.0.0.1:5111` | +| peach-oled | `PEACH_OLED_SERVER` | HTTP server address and port for JSON-RPC | `127.0.0.1:5112` | +| peach-stats | `PEACH_STATS_SERVER` | HTTP server address and port for JSON-RPC | `127.0.0.1:5113` | +| peach-web | `ROCKET_ENV` | Web application deployment mode | `prod` | +| | `ROCKET_TEMPLATE_DIR` | Tera template directory | `static/templates` | +| | `PEACH_WEB_WS` | WebSocket server port | `5115` | diff --git a/src/chapter_3_4_2.md b/src/chapter_3_4_2.md index 419e5ca..326dd66 100644 --- a/src/chapter_3_4_2.md +++ b/src/chapter_3_4_2.md @@ -1 +1,7 @@ # Web Interface + +[peach-web](https://github.com/peachcloud/peach-web) provides a web interface for monitoring and interacting with the PeachCloud device. This allows administration of the single-board computer (ie. Raspberry Pi) running PeachCloud, as well as the ssb-server and related plugins. + +**Stack** + +The peach-web stack currently consists of [Rocket](https://rocket.rs/) (Rust web framework), [Tera](https://tera.netlify.com/docs/installation/) (Rust template engine inspired by Jinja2 and the Django template language) and [Tachyons](https://tachyons.io/) (functional CSS library for humans). diff --git a/src/chapter_5.md b/src/chapter_5.md index a489b0c..262da75 100644 --- a/src/chapter_5.md +++ b/src/chapter_5.md @@ -1 +1,3 @@ # Licensing + +[AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.en.html)