peach-workspace/peach-web
glyph 7f202ac7e9 fix back-link and title for change_password 2021-11-18 11:54:21 +02:00
..
.cargo First workspace commit 2021-08-06 13:58:40 -04:00
debian First workspace commit 2021-08-06 13:58:40 -04:00
docs First workspace commit 2021-08-06 13:58:40 -04:00
src fix back-link and title for change_password 2021-11-18 11:54:21 +02:00
static update styles 2021-11-16 15:51:26 +02:00
templates update admin setting template paths 2021-11-17 11:39:29 +02:00
.gitignore First workspace commit 2021-08-06 13:58:40 -04:00
.travis.yml First workspace commit 2021-08-06 13:58:40 -04:00
Cargo.toml Add request guard for password authentication 2021-11-08 15:00:27 +01:00
README.md remove route tables and update readme 2021-11-16 08:43:04 +02:00
Rocket.toml First workspace commit 2021-08-06 13:58:40 -04:00

README.md

peach-web

Build Status Generic badge

Web Interface for PeachCloud

peach-web provides a web interface for the PeachCloud device. It serves static assets and exposes a JSON API for programmatic interactions.

Initial development is focused on administration of the device itself, beginning with networking functionality, with SSB-related administration to be integrated at a later stage.

The peach-web stack currently consists of Rocket (Rust web framework), Tera (Rust template engine), HTML, CSS and JavaScript.

Note: This is a work-in-progress.

Setup

Clone the peach-workspace repo:

git clone https://git.coopcloud.tech/PeachCloud/peach-workspace

Move into the repo and compile:

cd peach-workspace/peach-web cargo build --release

Run the tests:

cargo test

Move back to the peach-workspace directory:

cd ..

Run the binary:

./target/release/peach-web

Note: Networking functionality requires peach-network microservice to be running.

Environment

The web application deployment mode is configured with the ROCKET_ENV environment variable:

export ROCKET_ENV=stage

Other deployment modes are dev and prod. Read the Rocket Environment Configurations docs for further information.

Logging is made available with env_logger:

export RUST_LOG=info

Other logging levels include debug, warn and error.

Debian Packaging

A systemd service file and Debian maintainer scripts are included in the debian directory, allowing peach-web to be easily bundled as a Debian package (.deb). The cargo-deb crate can be used to achieve this.

Install cargo-deb:

cargo install cargo-deb

Move into the repo:

cd peach-web

Build the package:

cargo deb

The output will be written to target/debian/peach-web_0.3.0_arm64.deb (or similar).

Install the package as follows:

sudo dpkg -i target/debian/peach-web_0.3.0_arm64.deb

The service will be automatically enabled and started.

Uninstall the service:

sudo apt-get remove peach-web

Remove configuration files (not removed with apt-get remove):

sudo apt-get purge peach-web

Design

peach-web is built on the Rocket webserver and Tera templating engine. It presents a web interface for interacting with the device. HTML is rendered server-side. Request handlers call JSON-RPC microservices and serve HTML and assets. A JSON API is exposed for remote calls and dynamic client-side content updates (via plain JavaScript following unobstructive design principles). Each Tera template is passed a context object. In the case of Rust, this object is a struct and must implement Serialize. The fields of the context object are available in the context of the template to be rendered.

Licensing

AGPL-3.0