By participating in this project, you agree to abide our code of conduct.
This project is written in [java] and micronaut using Oracle's GraalVM and uses gradle to handle dependencies.
Prerequisites:
clone the codebase, then cd into the repo and install the dependencies with gradle
git clone git@github.com:JustServe-Resources/devkit.git
./gradlew assembleDon't make any changes to the main branch - these will be denied even if you try to. Branch naming conventions aren't enforced, though naming branches with a my-last-name/task-name convention isn't a bad idea.
Most importantly, see our style guide for our coding standards. This project enforces Conventional Commits, which is checked with each commit.
We require a linear commit history. This means we do not accept merge commits on feature branches. Learn More about this
When you need to pull the latest updates from the main repository into your local branch, you should rebase your changes on top of main rather than running a standard merge pull.
- The Preferred Approach: Keep your local repository configuration clean. You can set up Git to automatically rebase whenever you pull by running
git config pull.rebase true, or safely update an individual branch by using:If you encounter conflicts during a rebase, resolve them inline and usegit pull --rebase origin main
git rebase --continue. This ensures your final pull request applies cleanly to main as a straight line of commits.
Adequate acceptance testing is to be included with pull requests for new code. See our style guide for our testing standards. A portion of the codebase is generated during the build process. Using gradle's build task will both assemble and run tests.
./gradlew buildThis Micronaut application supports AOT (Ahead-of-Time) compilation to a GraalVM Native Image. This process produces a platform-specific binary with instant startup and lower memory overhead, though the compilation itself is resource-intensive. See graal's docs for optimization flags like quick build mode. Running the test suite prior to the native build allows GraalVM to leverage profile-guided data for a more performant executable.
./gradlew :cli:test :cli:nativeCompileNote
This build may pass on your OS but may fail on another OS for which this cli compiles. These will be built and tested during PR checks
Keep pull requests small and maintainable. Multiple changes should be self-contained and submitted as individual pull requests.
Push your branch to your cli fork and open a pull request against the original cli main branch. Contributions must pass all tests and CI before merging. Clearly showcase all changes and update tests accordingly.
Please only mark the pull request as "Ready for Review" when CI tests are passing and the PR is in fact complete and ready for review.