Skip to content
KlexSign
Visit KlexSign on GitHub
Set theme to dark (⇧+D)

KlexSign Contribution

KlexSign is a modern and open source software for electric signatures (esign) and fully digital contracts.

Techstack

KlexSign is build on a modern tech stack, including:

Contributing

KlexSign is an open source community-driven project and we welcome contributions as well as feedback from the community.

Firstly, if you want to contribute a larger change to KlexSign or implement a new feature we ask that you open a discussion first. You can use our Dev Mailing List or GitHub Discussion. This discussion is helpful to exchange ideas and opions, identify if the change will be accepted, as well as getting early feedback.

You want to make minor changes or fix a bug. You can skip this step and start with a PR directly.

Development

1. Clone this repository...

$ git clone [email protected]:klexhub/klexsign.git KlexSign

2. Navigate into project & install development-specific dependencies...

$ cd ./KlexSign && npm install

3. Start software

First, start the database server. We prepare a docker-compose file for MongoDB (you can use your own MongoDB server if you want :D).

$ cd ./server/integrations && docker-compose up -d

You can start the backend server by running the following command:

$ cd ./server && npm run start

After that you can start the frontend by running the following command:

$ cd ./frontend && npm run start

🎉 Yeah, now the codebase is running! And you can start hacking!

Visit the frontend at http://localhost:3000

And the express backend server is running on port 8080.

4. Run tests & ensure they pass...

$ npm run test

5. Open a Pull Request for your work & become the newest contributor to KlexSign! 🎉

Good PR?

Here's a quick checklist for a good PR, more details below:

  1. A discussion around the change (major on Dev Mailing List, minor on Github Issues)
  2. One feature/change per PR
  3. One commit per PR
  4. PR rebased on master (git rebase, not git pull)
  5. No changes to code not directly related to your PR
  6. Includes functional/integration test
  7. Includes documentation

Once you have submitted your PR please monitor it for comments/feedback. We reserve the right to close inactive PRs if you do not respond within 2 weeks (bear in mind you can always open a new PR if it is closed due to inactivity).

Also, please remember that we are not be able to respond to your PR immediately. The best place to ping us is on the thread you started on the dev mailing list.

Open a discussion on a proposed change

As KlexSign is a community-driven project we require contributors to open a discussion on what they are planning to contribute.

Discussions should first and foremost be done through GitHub Discussions.

The Dev Mailing List can be used to notify the community on your new discussion, and can also be used for more low-level implementation discussions.

If you plain to implement a large feature and the discussion is accepted, you can also request a new branch on GitHub. Contact a maintainer to get started.

Implementing

Do not format or refactor code that is not directly related to your contribution. If you do this it will significantly increase our effort in reviewing your PR. If you have a strong need to refactor code then submit a separate PR for the refactoring.

Testing

Do not add mock frameworks or other testing frameworks that are not already part of the testsuite. Please write tests in the same way as we have written our tests.

Documentation

We require contributions to include relevant documentation. Alongside your PR for code changes, prepare a PR to the KlexHub Developer Docs.

Submitting your PR

When preparing your PR make sure you have a single commit and your branch is rebased on the master branch from the project repository.

This means use the git rebase command and not git pull when integrating changes from master to your branch. See Git Documentation for more details.

We require that you squash to a single commit. You can do this with the git rebase -i HEAD~X command where X is the number of commits you want to squash. See the Git Documentation for more details.

The above helps us review your PR and also makes it easier for us to maintain the repository. It is also required by our automatic merging process.

Inspired by KeyCloak Contributing.md