ChomboGen is a web service that allows to generate images of Japanese (Riichi) Mahjong hands. The hands are provided in a text format and are generated in PNG format.
See it in action on hand.chombo.club.
The project is written purely in Rust, both its backend and frontend.
To run the development server, execute:
cd chombo-gen-backend
cargo run
This will start the server at localhost:8000.
To build a release version, execute:
cargo build --release
The target binary will be put at target/release/chombo-gen-backend
.
Frontend uses the yew framework. The code is compiled into a WebAssembly binary and then statically served.
First, install the Trunk bundler and add wasm32 target support to your Rust toolchain.
rustup target add wasm32-unknown-unknown
cargo install trunk
Then, you can use:
cd chombo-gen-frontend
trunk serve
to start local server at localhost:8080. It assumes that the backend is running at localhost:8000.
To build a distributable version of the frontend, execute:
trunk build --release
This will build a website in frontend/dist/
directory that can be statically served by a server such as nginx. You can override th backend URL by providing it as the CHOMBO_GEN_API_URL
environment variable, like so:
export CHOMBO_GEN_API_URL=http://api.hand.example.com
trunk build --release
We encourage contributors to use predefined pre-commit
hooks — to install them in your local repo, make sure you have pre-commit
installed and run:
pre-commit install
The easiest way to try locally or deploy chombo-gen is to use auto-generated Docker images. There is a separate image for backend, frontend, and a reverse proxy (that exposes both the backend and frontend under the same server), all of which are published on the GitHub Container Registry. There is an example docker-compose.yml
file provided in the repository root.
In the project root directory, execute:
docker compose up -d
After that, the website will be available on at localhost:8000.
This project uses riichi-hand-rs library, which uses:
- modified riichi-mahjong-tiles by FluffyStuff in public domain/CC0 1.0 Universal,
- mahjong tiles by Martin Persson which are free for personal and commercial use under the condition that a link to the author's page is provided.