Services to open for newcomers

Versions

Backend

Java & Mave version managment with sdkman

Sdkman can help to manage the version of different tools.

cat .sdkmanrc
# Enable auto-env through the sdkman_auto_env config
# Add key=value pairs of SDKs to use below
java=21.0.4-oracle
maven=3.9.8  # Ajoute apres

Switching to the required version can be automated:

cat $HOME/.sdkman/etc/config
sdkman_auto_env=true

To install skdman :

curl -s "https://get.sdkman.io" | bash

To run skdman (you need to restart your terminal after the installation) :

sdk env install

To run a Spring Boot project :

./mvnw spring-boot:run

Node version managment with nvm

Nvm can help to manage node.js version.
Switching to the target version can be automated by adding this snippet in .bashrc file.

autoload_nvmrc() {
  local nvmrc_path=$(nvm_find_nvmrc)
  
  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(cat "$nvmrc_path")
    # If the current Node version is different from the one in .nvmrc, switch versions
    if [ "$(nvm version)" != "$nvmrc_node_version" ]; then
      nvm use
    fi
  fi
}

PROMPT_COMMAND="autoload_nvmrc; $PROMPT_COMMAND"

Git webfflow

The selected git flow is GitHub Flow.

Versioning (SemVer)

The versioning strategy is Semantic Versioning.

Given a version number MAJOR.MINOR.PATCH, increment the:

MAJOR version when you make incompatible API changes
MINOR version when you add functionality in a backward compatible manner
PATCH version when you make backward compatible bug fixes

Conventional commits

The commit messages should respect the Conventional Commits specification.
This specification defines at least 2 types of messages, feat, fix and the notion of Breaking change.
This allow to automate the SemVer management:

fix             -> patch
feat            -> minor
Breaking change -> major

Commitlint & husky

In order to facilitate the commit with command line, commitlint can be used in conjunction to husky (client side git hooks).

Continuous Integration with GitHub Actions

API

API Manager

Storage

Tests & POC

Docker & Docker-compose