Skip to content

Repository and source code structure

We have all our repositories in the Secata group in GitLab: https://gitlab.com/secata

There is an additional place for code, which is the secata open source code: https://gitlab.com/secata-public

The intention is to align our repository structure in GitLab with our names in the code base.

In this text we adopt the terminology from https://maven.apache.org/guides/mini/guide-naming-conventions.html where group means the area we are working in and the artifact the concrete repository.

Definitions

Group is the path in GitLab under root, skipping the first "secata" root folder (https://gitlab.com/secata).

Artifact is the project name in GitLab. The exceptions to this rule are project names that include the project group's name.
To avoid having numerous GitLab projects named e.g. service, the project's group name can be prepended: companjon-service. The artifact for companjon/companjon-service should just be service.

Default strategy

Java

Root is com.partisia or com.secata

  • Maven pom files: groupid = \<Root>.\<Group>, artifactid = Artifact
  • Java package path: \<Root>.\<Group>.\<Artifact>

JAR deployment artifact names are derived from the POM.

TypeScript

Root is partisia or secata

  • package.json: name = @Root/Group-Artifact
  • npm package path: none

Package file names are derived from the name in package.json

Rust

Cargo.toml: [package].name = Artifact

Root groups in secata

Some groups should be seen as root groups, these are:

Incubator: https://gitlab.com/secata/incubator

PBC: https://gitlab.com/secata/pbc

Group is the path in GitLab under root, skipping the first "secata/*" root folder.

PBC exception

https://gitlab.com/secata/pbc is a notable exception from default behaviour. Here the root is either com.partisia or com.partisiablockchain depending on there is an open source equivalent. Regardless the maven pom root is always com.partisia (to distinguish from the open source variant with root com.partisiablockchain).

Java

Package root is: com.partisia

  • Maven pom files: groupid = com.partisia.blockchain.\<Group>, artifactid = Artifact
  • Java package path: com.partisiablockchain.\<Artifact>

Core

For https://gitlab.com/secata/pbc/core we ignore the core suffix in packages:

  • Java package path: com.partisiablockchain.\<Artifact>