Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
1037462
Feat/issue 29 implement postgresql persistence with flyway migrations…
V1rex May 1, 2026
8f0aea1
fix(solver): problem with task value range (#35)
V1rex May 10, 2026
ab364fa
feat: implement structured logging and observability (#36)
V1rex May 10, 2026
2c3d2ca
test: established comprehensive unit tests of the core service (#39)
V1rex May 16, 2026
c07883e
feat(devops): establish core ci automation and artifact compilation (…
V1rex May 16, 2026
822bc67
test/refactor: slice integration tests and rename package structure (…
V1rex May 21, 2026
23e1c8f
devops: implement core CI quality gates (Spotless, Checkstyle, and Cu…
V1rex May 22, 2026
9df8ae3
refactor(storagebin): moved from location entity to storagebin entity…
V1rex May 23, 2026
8c5f796
feat(loadunit): implement LoadUnit entity, controller, service, and r…
V1rex May 23, 2026
a62ab38
refactor(transportorder): implementation of task package to transport…
V1rex May 24, 2026
3afa849
refactor(forklift): separate concerns in forklift package (blueprint …
V1rex May 24, 2026
7824920
feat(data-seeder): implement data seeder (#57)
V1rex May 26, 2026
f9fc3a0
feat(constraints): implement essential constraints (#56)
V1rex May 27, 2026
b829fac
feat(planning): implement core optimization engine and dispatcher inf…
V1rex May 29, 2026
b0e61ff
chore: pre release basics (#63)
V1rex May 30, 2026
df60678
docs(release): create readme.md, architecture.md and contribute.md fo…
V1rex May 31, 2026
ba9e59d
feat: refactor global exception handler to polymorphic enum framework…
V1rex Jun 1, 2026
6bd7516
docs: write documentation of services (#67)
V1rex Jun 1, 2026
35996e4
feat: implement Schema Validation of DispatchJob (#71)
V1rex Jun 1, 2026
3046ad8
docs: implemented springdoc OpenAPI documentation (#31)
V1rex Jun 1, 2026
6865ca9
feat: implement test containers (#74)
V1rex Jun 2, 2026
83abcfd
devops: harden test execution with testcontainers optimizations (#80)
V1rex Jun 2, 2026
4dc664d
docker: add multi-stage Dockerfile and update compose stack (#82)
V1rex Jun 2, 2026
f856bf1
docs: fix README dead links, create CHANGELOG, rewrite ARCHITECTURE (…
V1rex Jun 2, 2026
1b9769c
docs: add documentation portal with coverage, javadoc, and test repor…
V1rex Jun 2, 2026
37b946a
feat: generate OpenAPI spec at built and deploy docs protal to Github
V1rex Jun 2, 2026
952598b
devops: move parts of the readme and architecturemd to a GitHub deplo…
V1rex Jun 4, 2026
cc708ce
devops: raise CI pipeline abstraction level (#89)
V1rex Jun 4, 2026
f496051
docs: complete mkdocs project documentation (#91)
V1rex Jun 13, 2026
615435a
devops: disable Checkstyle for v0.1.0 release (#94)
V1rex Jun 13, 2026
976c23f
docs: polish readme for v0.1.0 release
V1rex Jun 13, 2026
5cf3d71
docs: prepare changelog for v0.1.0
V1rex Jun 13, 2026
f82a7c0
docs: normalize Apache 2.0 license
V1rex Jun 13, 2026
e7d07b5
chore: set project version to 0.1.0
V1rex Jun 13, 2026
6fe8350
chore: set project version to 0.1.0 in pom.xml
V1rex Jun 13, 2026
bb89d62
chore: finalize v0.1.0 release metadata
V1rex Jun 13, 2026
5819e65
ci: remove public surefire report page
V1rex Jun 13, 2026
6f35635
fix(docs): removed broken surefire test links and fixed typos in the …
V1rex Jun 13, 2026
b3cfcb6
docs: refined the api-usage.md documentation
V1rex Jun 13, 2026
d87b818
build: add Maven wrapper
V1rex Jun 13, 2026
cee292c
build: add Maven wrapper jar file
V1rex Jun 13, 2026
26d9c08
fix(docs): fixed roadmap docs website link
V1rex Jun 13, 2026
8ea59d4
docs: added a demo tutorial to the docs.
V1rex Jun 14, 2026
81eb017
fix: load planning entities with required graph
V1rex Jun 14, 2026
4e801f2
test: align planning mocks with solver persistence flow
V1rex Jun 14, 2026
9094bb7
docs: added a link to the demo in README
V1rex Jun 14, 2026
6f41e5f
docs: add demo gif
V1rex Jun 14, 2026
d416e12
docs: align demo guide with seeded equipment data
V1rex Jun 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
---
name: Bug Report
name: 🐛 Bug Report
about: Create a report to help us improve
title: "bug:"
title: "[BUG]:"
labels: bug
assignees: ''
---

### Describe the bug
### 🚨Describe the bug
_A clear and concise description of what the bug is._

### Steps to Reproduce
### 🛠 Steps to Reproduce
1. Send POST to `/api/v1/forklifts` with...
2. See error...

### Screenshots
_If applicable, add screenshots to help explain your problem._

### Expected Behavior
_What should have happened?_
5 changes: 2 additions & 3 deletions .github/ISSUE_TEMPLATE/ci_cd.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: "🚀 Infrastructure & CI/CD"
about: Setup automation, Docker configurations, or deployment pipelines.
title: "[DEVOPS]: "
title: "[DEVOPS]:"
labels: devops, automation
---

Expand All @@ -17,5 +17,4 @@ Describe why this infrastructure change is needed (e.g., "The build process is m
- [ ] No secrets are exposed in the repository.
- [ ] [Optional] Deployment to environment is successful.

### 📚 Resources
Link to documentation (e.g., GitHub Actions, Docker Hub).

27 changes: 27 additions & 0 deletions .github/ISSUE_TEMPLATE/documentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: 📚 Documentation
about: Improve README, ARCHITECTURE, CONTRIBUTING, or code comments
title: "[DOCS]:"
labels: documentation
---

### 📍 What's Missing or Unclear?
_Describe what documentation is outdated, missing, or confusing._

Example:
- The "Quick Start" guide doesn't explain how to run integration tests.
- ARCHITECTURE.md lacks explanation of the planning domain.
- Method `buildCurrentState()` needs better JavaDoc.

### 📝 Suggested Content
_What should the documentation explain or clarify?_

### 📂 Location
_Which file(s) need updating?_
- [ ] README.md
- [ ] ARCHITECTURE.md
- [ ] CONTRIBUTING.md
- [ ] JavaDoc / Code Comments
- [ ] Other: _____


4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/feature.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: Feature Request
name: ✨ Feature
about: Create a new feature or Epic for the warehouse engine
title: "feat: "
title: "[FEAT]:"
labels: enhancement
assignees: ''
---
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/idea.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ labels: spike, enhancement
### 🌟 The "Big Picture"
What is the core idea? (e.g., "Implement a 'What-If' mode to simulate warehouse layout changes").

### 🚀 Business / User Value
### 🚀 Added Value
Why is this worth building? How does it make the Warehouse Dispatcher better or more "Senior"?

### 🛠 Potential Implementation
Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/logic_fix.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: Logic or Optimization Refactor
name: 🔨 Logic Fix
about: Fix mathematical errors or improve solver efficiency
title: "logic:"
title: "[LOGIC]:"
labels: solver, math
assignees: ''
---
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/research_spike.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: "🔬 Research / Spike"
about: Investigate a new technology or approach before implementation.
title: "[SPIKE]: "
title: "[SPIKE]:"
labels: research, documentation
---

Expand Down
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/tech_debt.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: Technical Debt
name: 🧹 Technical Debt
about: Clean up code, improve performance, or update dependencies
title: "refactor: "
title: "[REFACTOR]:"
labels: tech-debt
---
### The Debt
Expand Down
241 changes: 241 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,241 @@
name: Continuous Integration

on:
push:
branches: [develop, main, 'devops/**', 'docs/**']
pull_request:
branches: [develop, main]

permissions:
contents: write

jobs:
quality:
name: Quality
runs-on: ubuntu-latest

steps:
- name: Checkout Source Code
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven'

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Execute Test Suite with Maven
run: |
# Checkstyle is intentionally disabled for the v0.1.0 release.
# It will be reintroduced as a proper quality gate in Milestone 2.
#
# Previous temporary setup:
# mvn clean package -Dspotless.check.skip=false -Dcheckstyle.failOnViolation=false

mvn clean package \
-Dspotless.check.skip=false
timeout-minutes: 15

- name: Evaluate Build Status
id: build-status
if: always()
run: |
if [ "${{ job.status }}" = "success" ]; then
echo "build_status=passing" >> $GITHUB_OUTPUT
echo "build_color=brightgreen" >> $GITHUB_OUTPUT
else
echo "build_status=failing" >> $GITHUB_OUTPUT
echo "build_color=red" >> $GITHUB_OUTPUT
fi

# deactivation the javadoc badge for v0.1.0
#- name: Calculate Service Javadoc Coverage
# id: calc-doc-coverage
#if: always()
#run: python scripts/ci/javadoc_coverage.py

- name: Calculate JaCoCo Test Coverage
id: jacoco-coverage
if: always()
run: python scripts/ci/jacoco_coverage.py

# - name: Generate Dynamic Doc Badge
# uses: schneegans/dynamic-badges-action@v1.7.0
# if: always()
# with:
# auth: ${{ secrets.GIST_SECRET }}
# gistID: 27dc15f2c2aeef4b021fdff63d7ba722
# filename: lift-nexus-docs.json
# label: doc coverage
# message: "${{ steps.calc-doc-coverage.outputs.doc_percentage || '0' }}%"
# color: ${{ steps.calc-doc-coverage.outputs.doc_color || 'red' }}

- name: Generate Dynamic Test Coverage Badge
uses: schneegans/dynamic-badges-action@v1.7.0
if: always()
with:
auth: ${{ secrets.GIST_SECRET }}
gistID: 27dc15f2c2aeef4b021fdff63d7ba722
filename: lift-nexus-coverage.json
label: test coverage
message: "${{ steps.jacoco-coverage.outputs.test_percentage || '0' }}%"
color: ${{ steps.jacoco-coverage.outputs.test_color || 'red' }}

- name: Prepare Quality Artifacts
if: always()
run: |
mkdir -p ci-artifacts/quality/target/site


if [ -f target/openapi.json ]; then
cp target/openapi.json ci-artifacts/quality/target/openapi.json
fi

if [ -d target/site/jacoco ]; then
cp -r target/site/jacoco ci-artifacts/quality/target/site/jacoco
fi



- name: Upload Quality Artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: quality-artifacts
path: ci-artifacts/quality/
if-no-files-found: warn
retention-days: 7

- name: Upload Production Build Artifacts
uses: actions/upload-artifact@v4
with:
name: warehouse-dispatcher-build-assets
path: |
target/*.jar
target/openapi.json
retention-days: 7

documentation:
name: Documentation
runs-on: ubuntu-latest
needs: quality

steps:
- name: Checkout Source Code
uses: actions/checkout@v4

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '21'
distribution: 'temurin'
cache: 'maven'

- name: Set up Python for MkDocs
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
cache-dependency-path: docs/requirements-docs.txt

- name: Install MkDocs Dependencies
run: pip install -r docs/requirements-docs.txt

- name: Build MkDocs Documentation
run: mkdocs build

- name: Generate Javadoc
run: |
mvn javadoc:javadoc \
-Dquiet=true \
-Ddoclint=none \
-Dcheckstyle.skip=true \
-Dmaven.checkstyle.skip=true \
-Dspotless.check.skip=true

test -f target/reports/apidocs/index.html

- name: Prepare Documentation Artifacts
run: |
mkdir -p ci-artifacts/docs/build
mkdir -p ci-artifacts/docs/target/reports

cp -r build/site ci-artifacts/docs/build/site
cp -r target/reports/apidocs ci-artifacts/docs/target/reports/apidocs

- name: Upload Documentation Artifacts
uses: actions/upload-artifact@v4
with:
name: documentation-artifacts
path: ci-artifacts/docs/
if-no-files-found: error
retention-days: 7

deploy:
name: Deploy GitHub Pages
runs-on: ubuntu-latest
needs: [quality, documentation]
if: (
github.ref == 'refs/heads/main' ||
github.ref == 'refs/heads/develop' ||
startsWith(github.ref, 'refs/heads/devops/') ||
startsWith(github.ref, 'refs/heads/docs/') )

steps:
- name: Checkout Source Code
uses: actions/checkout@v4

- name: Download Quality Artifacts
uses: actions/download-artifact@v4
with:
name: quality-artifacts
path: .

- name: Download Documentation Artifacts
uses: actions/download-artifact@v4
with:
name: documentation-artifacts
path: .

- name: Debug Downloaded Artifacts
run: find . -maxdepth 5 -type d | sort

- name: Prepare GitHub Pages
run: bash scripts/ci/prepare_pages.sh

- name: Deploy main to root
if: github.ref == 'refs/heads/main'
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./gh-pages
publish_branch: gh-pages
cname: lift-nexus.amine-bahij.dev
keep_files: true

- name: Deploy develop preview to /dev-branch
if: github.ref == 'refs/heads/develop'
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./gh-pages
publish_branch: gh-pages
destination_dir: dev
keep_files: true

- name: Deploy devops preview to /preview
if: (startsWith(github.ref, 'refs/heads/devops/') ||
startsWith(github.ref, 'refs/heads/docs/'))
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./gh-pages
publish_branch: gh-pages
destination_dir: preview
keep_files: true
Loading
Loading