'
+labels: 'bug'
+assignees: ''
+---
+
+
+
+## Bug Report
+
+**Description**
+
+
+
+**Steps to Reproduce**
+
+
+
+**Expected behavior**
+
+
+
+**Screenshots**
+
+
+
+---
+title: 'Bug: '
+labels: 'bug'
+assignees: ''
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..1bb11c7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,12 @@
+name: Issue Templates
+description: Choose an issue template to use.
+labels:
+ - bug
+ - enhancement
+templates:
+ - name: Bug Report
+ path: bug_report.md
+ description: Create a report to help us fix a bug.
+ - name: Feature Request
+ path: feature_request.md
+ description: Suggest an idea for a new feature or enhancement.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..b9198e1
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,34 @@
+---
+title: 'Feature: '
+labels: 'enhancement'
+assignees: ''
+---
+
+
+
+## Feature Request
+
+**Describe the solution you'd like**
+
+
+
+**Describe alternatives you've considered**
+
+
+
+**Additional context**
+
+
+
+**Related Issues**
+
+
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..5c7a08b
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,44 @@
+---
+title: ': '
+labels: ''
+assignees: ''
+---
+
+
+
+## Pull Request
+
+**Description**
+
+
+
+**Issues**
+
+
+
+**Checklist**
+
+
+
+* [ ] This PR contains a description of the changes I'm making and its title follows the Conventional Commit format (
+ e.g., `feat:`, `fix:`)
+* [ ] I've read
+ the [Contribution Guidelines](https://github.com/SchweizerischeBundesbahnen/netzgrafik-editor-converter/blob/main/CONTRIBUTING.md)
+* [ ] I've added tests for changes or features I've introduced
+* [ ] I documented any high-level concepts I'm introducing in `docs/`
+* [ ] CI is currently green and this is ready for review
+
+
\ No newline at end of file
diff --git a/.github/workflows/maven-ci.yml b/.github/workflows/maven-ci.yml
index 45ab54a..b4edaf3 100644
--- a/.github/workflows/maven-ci.yml
+++ b/.github/workflows/maven-ci.yml
@@ -2,10 +2,11 @@ name: Maven CI
on:
push:
- branches: [ "main" ]
+ branches:
+ - main
pull_request:
- branches: [ "main" ]
-
+ branches:
+ - main
jobs:
build:
runs-on: ubuntu-latest
@@ -17,7 +18,7 @@ jobs:
with:
java-version: '21'
distribution: 'temurin'
- cache: maven
+ cache: 'maven'
- name: Build with Maven
run: mvn -B verify --file pom.xml
diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml
new file mode 100644
index 0000000..4f0261d
--- /dev/null
+++ b/.github/workflows/release-please.yml
@@ -0,0 +1,39 @@
+name: Release Please
+
+on:
+ push:
+ branches:
+ - main
+
+permissions:
+ contents: write
+ packages: write
+ pull-requests: write
+
+jobs:
+ release-please:
+ runs-on: ubuntu-latest
+ outputs:
+ release_created: ${{ steps.release.outputs.release_created }}
+ steps:
+ - uses: googleapis/release-please-action@v4
+ id: release
+ with:
+ release-type: maven
+
+ release:
+ needs: release-please
+ if: ${{ needs.release-please.outputs.release_created }}
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-java@v4
+ with:
+ java-version: '21'
+ distribution: 'temurin'
+ cache: 'maven'
+
+ - name: Publish
+ run: mvn deploy -s $GITHUB_WORKSPACE/settings.xml
+ env:
+ GITHUB_TOKEN: ${{ github.token }}
\ No newline at end of file
diff --git a/CODING_STANDARDS.md b/CODING_STANDARDS.md
new file mode 100644
index 0000000..e7132a4
--- /dev/null
+++ b/CODING_STANDARDS.md
@@ -0,0 +1,61 @@
+# Coding Standards
+
+This repository uses the IntelliJ formatter with customizations defined in the [codeStyles](.idea/codeStyles)
+configuration. Ensure that you format the project before committing changes.
+
+- Add spaces after class definitions and before return statements if a method has more than three statements.
+- Use spaces to group related blocks together (e.g., before `if` control flow statements).
+- Follow these naming conventions:
+ - Use `camelCase` for methods.
+ - Use `UpperCamelCase` for classes.
+ - Use `ALL_UPPER_CASE` for static constants.
+
+Minimize boilerplate code by using Lombok to generate getters, setters, constructors, builders, or value classes.
+
+Do not use `Optional<>` for parameters. It is permitted for return types and internal object usage. Use method
+overloading and omit the parameter instead.
+
+Example:
+
+```java
+
+@RequiredArgsConstructor
+public class ExampleService {
+
+ private static final int MAX_ATTEMPTS = 5;
+
+ @Getter
+ private final int reqeustCount = 0;
+
+ private final ExampleRepository repository;
+
+ public Optional findById(String id) {
+ return repository.findById(id);
+ }
+}
+```
+
+## Design
+
+- Restrict visibility as much as possible. Allow access from outside the package only when absolutely necessary.
+- Program to interfaces, not implementations.
+- Follow SOLID principles to structure your code (classes).
+- Adhere to the DRY (Don't Repeat Yourself) principle.
+- Avoid magic numbers or literals; use constants instead.
+
+## Documentation
+
+- Document only non-obvious public members using Javadoc (e.g., do not document simple getters or setters).
+- Avoid comments in code except for complex logic or case structures. When comments are necessary, ensure they are clear
+ and concise.
+
+## Testing
+
+- Use JUnit 5 for testing. The use of AssertJ and Mockito is permitted.
+- The Surefire plugin runs unit tests (`ExampleTest`), while the Maven Failsafe plugin runs integration tests (
+ `ExampleIT`).
+- Follow the naming conventions with the `Test` and `IT` postfixes. Use descriptive names for test cases:
+ - Use `should...`, `shouldNot...`, or `shouldThrow...`.
+ - The `_` character is allowed in test case names to differentiate cases.
+- Use nested test classes to group thematically related test cases.
+- For complex test setups, use the test builder pattern or introduce a test extension for reusability.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..2982c6d
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,111 @@
+# Contributing
+
+We appreciate all kinds of contributions. The following is a set of guidelines for contributing to this repository on
+GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this
+document in a pull request.
+
+By submitting a contribution to this repository you agree that you do this under the [License](LICENSE) of the
+repository and certify that you have all the rights to do so.
+
+## Code of Conduct
+
+This project and everyone participating in it is governed by
+the [Code of Conduct](https://github.com/SchweizerischeBundesbahnen/netzgrafik-editor-converter/tree/main?tab=coc-ov-file).
+By participating, you are expected to uphold this code.
+
+## Found an Issue?
+
+If you find a bug in the source code or a mistake in the documentation, you can help us by submitting an issue to
+our [GitHub Repository](https://github.com/SchweizerischeBundesbahnen/netzgrafik-editor-converter). Including an issue
+reproduction is the absolute best way to help the team quickly diagnose the problem. Screenshots are also helpful.
+
+You can help the team even more and Pull Request with a fix.
+
+## Want a Feature?
+
+You can *request* a new feature by submitting an issue to
+our [GitHub Repository](https://github.com/SchweizerischeBundesbahnen/netzgrafik-editor-converter). If you would like to
+*implement* a new feature, please submit an issue with a proposal for your work first, to be sure that we can use it.
+
+Please consider what kind of change it is:
+
+* For a **Major Feature**, first open an issue and outline your proposal so that it can be
+ discussed. This will also allow us to better coordinate our efforts, prevent duplication of work,
+ and help you to craft the change so that it is successfully accepted into the project.
+* **Small Features** can be crafted and directly submitted as a Pull Request.
+
+## Submitting a Pull Request (PR)
+
+Before you submit your Pull Request (PR) consider the following guidelines:
+
+* Checkout a new branch: `feature/xxx` or `bugfix/xxx`
+* Create your feature or patch, **including appropriate test cases**.
+* Follow our [Coding Standards](CODING_STANDARDS.md).
+* Run tests and ensure that all tests pass.
+* Commit your changes using a descriptive commit message that follows our Commit Message Guidelines.
+* Push your branch to GitHub.
+
+* In GitHub, send a pull request to `SchweizerischeBundesbahnen/netzgrafik-editor-converter:main`.
+ The PR title and message should as well conform to the Commit Message Guidelines.
+
+## Commit Message Guidelines
+
+This project uses [Conventional Commits](https://www.conventionalcommits.org/) to generate the changelog.
+
+### Commit Message Format
+
+```
+():
+
+
+
+