Contributing

If you're interested in supporting Stump's development, and you know how to code, follow the steps outlined in the developer guide for information about setting up your development environment. If you're not a developer, but you'd still like to support the project, you can do so by donating or reporting bugs.

If you'd like to support the project financially, you can do so using any of the following platforms:

Contributions are very encouraged and welcome! Please review the CONTRIBUTING.md before getting started.

I put together a small set of resources to get you started with Stump. If you're completely new to rust and/or web development, I recommend reviewing the Rust Book and Getting started with React in that section first.

Please review the CONTRIBUTING.md beforehand. To get started, you'll need to set up your development environment.

Ensure you are on the develop branch before continuing.

Note

If you are on a Windows machine, you will need Visual C++ installed on your system.

If you are on a Mac with Apple Silicon, you will need to install Rosetta.

You need to install pnpm, rust and node. Additionally, if you want to run any of the dev scripts on the rust side of things, you'll need to install cargo-watch. Afterwards, run the following:

pnpm run setup

This will install the project dependencies, build the frontend bundle (required for server to start), generate the prisma client, and create the sqlite database.

I use moonrepo for Stump's repository management. You'll want to read a bit about how it works, but below are two examples:

# webapp + server
moon run server:dev web:dev
# desktop app + server
moon run server:start desktop:desktop-dev

Notice the general format is moon run <app>:<command>. You can supply multiple <app>:<command> pairs to run multiple tasks concurrently.

At this point, you're pretty much all set to start contributing!

Stump has gotten quite large and complex, so I've put together a few notes and tips to help you get started.

If you aren't sure what to work on, I recommend taking a look at some of the open issues on GitHub. You can also reach out to me on Discord, or an open GitHub issue, if you have any questions.

In general, some good places to start might be:

  • Translation, so Stump is accessible to non-English speakers.
    • An automated translation system would be immensely helpful! If you're knowledgeable in this area, please reach out! As of right now, it is just planned as a future feature.
  • Writing comprehensive integration tests.
  • Designing and/or implementing UI elements.
  • Docker build optimizations (it is currently horrendous).
  • CI pipelines / workflows.
  • And lots more!

The Stump server exposes a REST API for interacting with the server. API documentation is currently under development, and you can follow along with the progress here. In the meantime, you can use the Postman collection to get a feel for the API.

Stump is developed using primarily Rust and TypeScript.

For Rust, I use rustfmt for formatting, and clippy for linting. For TypeScript, I use Prettier for formatting, and ESLint for linting. While I definitely recommend using these tools as you develop, there is a pre-commit hook that will lint and format your code before committing.

I also want to point out that this repository uses 4 tab spaces for indentation. This is primarily for accessibility, as well as to be consistent with the Rust codebase. If you'd like, you can configure your editor to render whatever indentation you prefer, even though the raw code will be as described above. I personally maintain the 4 tab space rendering on the Rust side and shorten it to only render 2 on the frontend side.

Below is a list of resources that I've found helpful in developing Stump. I'll try to keep this list up to date as I find new resources.