A simplified Jira clone built with seed.rs and actix
Go to file
2020-06-13 19:01:58 +02:00
.builds Strip symbols and store artifacts 2020-06-12 20:55:47 +02:00
jirs-cli Satisfy clippy 2020-06-13 19:01:58 +02:00
jirs-client Satisfy clippy 2020-06-13 19:01:58 +02:00
jirs-css Optimize and reorganize code 2020-06-10 22:11:51 +02:00
jirs-data Add some logic to messages 2020-05-28 16:52:14 +02:00
jirs-server Satisfy clippy 2020-06-13 19:01:58 +02:00
tmp Add upload image 2020-05-05 08:33:40 +02:00
_config.yml Set theme jekyll-theme-minimal 2020-05-07 15:38:30 +02:00
.dockerignore Add docker 2020-06-04 20:47:10 +02:00
.env Add docker 2020-06-04 20:47:10 +02:00
.gitignore Display messages, load messages, refactor 2020-05-27 22:05:11 +02:00
Cargo.lock Strip symbols and store artifacts 2020-06-12 22:35:20 +02:00
Cargo.toml Build css with rust 2020-04-23 14:26:43 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md (#1) 2020-05-07 15:40:28 +02:00
CONTRIBUTING.md Add CONTRIBUTING 2020-03-30 21:26:35 +00:00
docker-compose.yml Add docker 2020-06-04 20:47:10 +02:00
LICENSE Add LICENSE 2020-03-30 21:19:29 +00:00
README.md First release 2020-06-08 15:53:26 +02:00

A simplified Jira clone built with seed.rs and actix

JIRS

Server: builds.sr.ht status Client: builds.sr.ht status

https://git.sr.ht/~tsumanu/jirs

Features

  • Actor based asynchronous backend
  • Ultra fast functional frontend build with WASM
  • Showing message when person is invited to project
  • Send e-mail with invitation to project
  • Switch project in profile page
  • Choose time tracking in project
  • Edit, delete and move issues
  • Comment issue
  • Add people to project

Known bugs

  • Bad sorting when dragging up and down

Roadmap

Version 1.0
  • Basic issue management
  • Basic columns management
  • Basic user management
Version 1.1
  • Add Epic
  • Add grouping by Epic
  • Add backend maximal per seconds request or die
  • Add fibonacci tracked issue reports
  • Add hourly tracked issue reports
  • Add Rich Text Editor
  • Add personal settings to choose MDE (Markdown Editor) or RTE
  • Add issues and filters

How to run it

Config files

WEB

# web.toml
concurrency = 2
port = "5000"
bind = "0.0.0.0"
ssl = false
tmp_dir = "./tmp"

[s3]
access_key_id = ""
secret_access_key = ""
bucket = ""
region_name = "eu-central-1"

[filesystem]
store_path = ""
client_path = "/img"
Upload local storage

If default feature "local-storage" is on your uploaded files will be stored on your machine. This requires additional configuration.

[filesystem]
store_path = "/var/jirs/uploads"
client_path = "/img"
  • store_path is your local machine path. Files will be saved there. This can be relative to CWD path or absolute path.
  • client_path is web path

Both must be set and non-empty

Upload to AWS S3

If default feature "aws-s3" is on your uploaded files will be send to AWS S3 service. This requires additional configuration.

[s3]
access_key_id = ""
secret_access_key = ""
bucket = ""
region_name = "eu-central-1"

Database

# db.toml
concurrency = 2
database_url = "postgres://postgres@localhost:5432/jirs"

Mail Service

You can send e-mail only via service which will handle this. This application was build using sendgrid.

# mail.toml
concurrency = 2
user = "apikey"
pass = "YOUR-TOKEN"
host = "smtp.sendgrid.net"
from = "contact@jirs.pl"

Local variables

Within jirs directory place .env file with following content

DATABASE_URL=postgres://postgres@localhost:5432/jirs
RUST_LOG=actix_web=info,diesel=info
JIRS_CLIENT_PORT=7000
JIRS_CLIENT_BIND=0.0.0.0
JIRS_SERVER_PORT=5000
JIRS_SERVER_BIND=0.0.0.0
NODE_ENV=development
DEBUG=true

Client and Server bind/port must be provided. Client will be build using those variables and will send requests only using this address. DATABASE_URL is required only to setup database. Runtime will use db.toml.

Backend

Requirements:

  • PostgreSQL
cargo install diesel_cli --no-default-features --features postgres
export DATABASE_URL=postgres://postgres@localhost/jirs
diesel setup
diesel migration run

cargo run --bin jirs_server

Frontend

curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
cd jirs_client
yarn
./scripts/prod.sh
sudo ln -s ./jirs.nginx /etc/nginx/sites-enabled/
sudo nginx -s reload

Issue trackers

https://todo.sr.ht/~tsumanu/JIRS