Skip to content

vgwidt/sumi

Repository files navigation

Sumi

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.

Features

  • Create, edit, close, re-assign tickets
  • Ticket list with sorting, filtering, and pagination
  • Enter notes for a ticket
  • Ticket event tracking (re-assignments, status changes, etc)
  • Nested-document style wiki
  • Markdown support for ticket descriptions, notes, and wiki
  • Editing conflict handling with revision history
  • Multi-user support
  • Local authentication with Argon2 hashing and salting
  • REST-style API
  • Dark/light theme
  • Localization support

Future Features

Down the pipe

These are some features I'm looking to add:

  • Custom dashboard
  • Projects
  • Tasklists for tickets
  • Show number of notes and tasks for a ticket in ticket list
  • Show description preview for a ticket on ticket list
  • Add On Hold status for tickets
  • Time tracking
  • Custom ticket tags
  • Recycle bin for deleted items
  • Contacts
  • Access levels and disabled users
  • Test coverage
  • More logging and error handling

Pipe-dream

These are some features I'd like to see but will not get to at this stage:

  • E-mail integration (updates, submit via-e-mail)
  • Scheduled tickets
  • Issue submission portal
  • Asset tracking
  • Reporting
  • Optional OIDC authentication
  • Custom Fields

Quickstart with Docker

  1. 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
  1. Set your environment variables in .env (refer to .env.sample).

  2. Build the Docker image

docker build -f Dockerfile -t vgwidt/sumi .
  1. Modify docker-compose.yml as needed and run:
docker-compose up -d

Setup Development Environment

Install Dependencies

Install Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Install diesel_cli dependencies:

  • Linux
sudo apt-get install libpq-dev
  • Windows Install PostgreSQL (don't need to include DB server if not using that for the instance). Add the following environment variables:
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 (diesel-rs/diesel#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.

Build

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.

Getting Started

Default login is admin/password

About

Multi-user issue tracking and knowledge base app built with Yew & Actix

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages