This repository contains the source code for the Gesha project - a platform for providing stable and consistent temperatures when brewing espresso.
The project contains the following:
src/
- the main application (Rust)ui/
/src-tauri
- the UI source code (TypeScript)models
- projects for modelling some aspect of the machine's behaviour (Python + SQL)docs/
- the source files for my project proposal and dissertation report (Rmarkdown / Typst)
Make sure you have the following installed:
- Rust
- Just
- Python3 + Poetry
- Node.js + NPM
The project is managed with a Justfile
, run just --list
for a list of recipes, or look at the Justfile.
The main Rust app cannot be run on devices that aren't the Raspberry Pi because of the rppal
dependency. Ideally this module should be stubbed for local compiling and testing. For now the native compile target is arm-unknown-linux-gnueabihf
.
Ensure both Homebrew and rustup are installed, then install the cross-compilation toolchain for ARMv7:
brew install armv7-unknown-linux-gnueabihf
rustup target add arm-unknown-linux-gnueabihf
Then compile gesha: cargo build --target arm-unknown-linux-gnueabihf
If you're not on macOS, cross-rs can be used to compile Gesha for the Raspberry Pi Zero from any OS, since it uses Docker containers (Linux) for the toolchain.
The Pi Zero v1 has a 32-bit ARMv6 CPU, the rust target is arm-unknown-linux-gnueabihf
(See Supported Targets - this target requires glibc 2.31).
The project can be compiled with:
cross build --target arm-unknown-linux-gnueabihf