A multi-user issue tracking system built with Yew frontend and actix-web backend.
This is a project for learning. The app is in a working state, but it is relatively unstyled, does not yet display meaningful errors, and has little input verification.
These are some features I'm looking to add:
These are some features I'd like to see but will not get to at this stage:
Generate and place certificates in ./certificates/ folder (cert.pem & key.pem). Sample command to generate self-signed cert:
openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365 -subj /CN=localhost
Set your environment variables in .env (refer to .env.sample).
Build the Docker image
docker build -f Dockerfile -t vgwidt/sumi .
Modify docker-compose.yml as needed and run:
docker-compose up -d
Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Install diesel_cli dependencies:
sudo apt-get install libpq-dev
PQ_LIB_DIR = C:\Program Files\PostgreSQL\14\lib
PATH = C:\Program Files\PostgreSQL\14\bin
If you tried to build or run using cargo before adding the environment variables, run cargo clean. If in Windows and you get a Non-UTF-8 output error, install English language pack for VC build tools.
Windows: libintl-9.dll which ships with EDB is broken, get libintl-8.dll and put in debug folder (https://github.com/diesel-rs/diesel/discussions/2947)
Install diesel_cli
cargo install diesel_cli --no-default-features --features postgres
Install Docker (optional for quick PostgreSQL setup)
sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl status docker
Install target for wasm
rustup target add wasm32-unknown-unknown
Install trunk
cargo install trunk
Other dependencies
cargo install --locked wasm-bindgen-cli
If running from Windows, you need to manually create the symlink. Run the following from the backend folder:
mklink /D dist ..\frontend\dist
Finally, create .env file in project root. Refer to .env.sample for required variables.
Note, in a clean Linux environment using Docker for Redis without reverse proxies where everything runs on the same server, localhost does not work. Use 127.0.0.1 instead.
Run ./run.sh
(Linux, set to executable with chmod +x ./run.sh
) or .\run.bat
(Windows). This will execute the database migration, use trunk to build the frontend, then run the backend with cargo.
Default login is admin/password