peach-workspace/peach-web
glyph 220c7fd540 use tuple err source 2021-12-08 10:07:58 +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 use tuple err source 2021-12-08 10:07:58 +02:00
static fix function names and remove flashMsg code duplication 2021-11-22 15:31:39 +02:00
templates improve template styling consistency 2021-11-18 11:48:37 +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 remove unnecessary websocket dependency 2021-11-25 11:12:05 +02:00
README.md update auth docs 2021-11-25 11:15:39 +02:00
Rocket.toml use rocket config to (en|dis)able auth 2021-11-25 11:12:50 +02: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

Deployment Mode

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.

Authentication

Authentication is disabled in development mode and enabled by default when running the application in production mode. It can be disabled by setting the ROCKET_DISABLE_AUTH environment variable to true:

export ROCKET_DISABLE_AUTH=true

Logging

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