Skip to content

Commit 731a31c

Browse files
FelixTJDietrichclaudetamang29
authored
feat: monorepo modernization — pnpm 11 + Node 24, Docusaurus docs, React <Apollon> API, VS Code rewrite (#691)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com> Co-authored-by: Ravi Tamang <40029376+tamang29@users.noreply.github.com>
1 parent f19aa2e commit 731a31c

284 files changed

Lines changed: 30644 additions & 70953 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.git
22
.github
33
.gitignore
4+
.husky
45
.context
56
.env
67
.env.*
@@ -16,15 +17,29 @@ test-results/
1617
*.log
1718

1819
node_modules/
20+
**/node_modules/
1921
dist/
22+
**/dist/
23+
24+
**/tests/
25+
**/__tests__/
26+
**/*.test.ts
27+
**/*.test.tsx
28+
**/*.spec.ts
29+
**/playwright.config.ts
30+
**/vitest.config.ts
2031

21-
standalone/webapp/dist
22-
standalone/webapp/node_modules
2332
standalone/webapp/android
2433
standalone/webapp/ios
2534

26-
standalone/server/dist
27-
standalone/server/node_modules
35+
# Keep the vscode-extension package.json files (pnpm install reads them
36+
# as workspace manifests), but drop the source.
37+
vscode-extension/src
38+
vscode-extension/menu/src
39+
vscode-extension/editor/src
40+
vscode-extension/menu/dist
41+
vscode-extension/editor/dist
42+
vscode-extension/dist
2843

29-
library/node_modules
30-
library/dist
44+
scripts/
45+
.changeset/

.editorconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
indent_style = space
7+
indent_size = 2
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false
13+
14+
[Makefile]
15+
indent_style = tab

.gitattributes

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
* text=auto eol=lf
2+
3+
pnpm-lock.yaml linguist-generated=true -diff merge=binary
4+
5+
*.png binary
6+
*.jpg binary
7+
*.jpeg binary
8+
*.gif binary
9+
*.ico binary
10+
*.svg text
11+
*.vsix binary

.github/ISSUE_TEMPLATE/bug-report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,4 @@ body:
7777
attributes:
7878
label: Web Console Output
7979
description: If applicable, copy output from the Web Console.
80-
render: shell
80+
render: shell

.github/workflows/build-and-push.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ jobs:
4343
- 'docker/**'
4444
- 'nginx.conf'
4545
- 'package.json'
46-
- 'package-lock.json'
46+
- 'pnpm-lock.yaml'
47+
- 'pnpm-workspace.yaml'
48+
- '.npmrc'
49+
- '.nvmrc'
4750
- 'tsconfig*.json'
4851
- '.github/workflows/build-and-push.yml'
4952
@@ -68,7 +71,7 @@ jobs:
6871
dockerfile: ./standalone/server/Dockerfile
6972
image: ghcr.io/ls1intum/apollon/server
7073
context: .
71-
uses: ls1intum/.github/.github/workflows/build-and-push-docker-image.yml@main
74+
uses: ls1intum/.github/.github/workflows/build-and-push-docker-image.yml@c8ede985ff7999c28d7538cb32ae52bfb83f51b9 # main
7275
with:
7376
image-name: ${{ matrix.image }}
7477
docker-file: ${{ matrix.dockerfile }}

.github/workflows/deploy-prod.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ permissions: {}
4747
jobs:
4848
deploy-db:
4949
if: ${{ inputs.deploy-db }}
50-
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@main
50+
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@c8ede985ff7999c28d7538cb32ae52bfb83f51b9 # main as of 2026-05-19
5151
with:
5252
environment: Production
5353
docker-compose-file: "./docker/compose.db.yml"
@@ -58,7 +58,7 @@ jobs:
5858

5959
deploy-proxy:
6060
if: ${{ inputs.deploy-proxy }}
61-
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@main
61+
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@c8ede985ff7999c28d7538cb32ae52bfb83f51b9 # main as of 2026-05-19
6262
with:
6363
environment: Production
6464
docker-compose-file: "./docker/compose.proxy.yml"
@@ -69,7 +69,7 @@ jobs:
6969

7070
deploy-app:
7171
if: ${{ inputs.deploy-app }}
72-
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@main
72+
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@c8ede985ff7999c28d7538cb32ae52bfb83f51b9 # main as of 2026-05-19
7373
with:
7474
environment: Production
7575
docker-compose-file: "./docker/compose.app.yml"

.github/workflows/deploy-staging.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ permissions: {}
4747
jobs:
4848
deploy-db:
4949
if: ${{ inputs.deploy-db }}
50-
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@main
50+
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@c8ede985ff7999c28d7538cb32ae52bfb83f51b9 # main as of 2026-05-19
5151
with:
5252
environment: Staging
5353
docker-compose-file: "./docker/compose.db.yml"
@@ -58,7 +58,7 @@ jobs:
5858

5959
deploy-proxy:
6060
if: ${{ inputs.deploy-proxy }}
61-
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@main
61+
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@c8ede985ff7999c28d7538cb32ae52bfb83f51b9 # main as of 2026-05-19
6262
with:
6363
environment: Staging
6464
docker-compose-file: "./docker/compose.proxy.yml"
@@ -69,7 +69,7 @@ jobs:
6969

7070
deploy-app:
7171
if: ${{ inputs.deploy-app }}
72-
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@main
72+
uses: ls1intum/.github/.github/workflows/deploy-docker-compose.yml@c8ede985ff7999c28d7538cb32ae52bfb83f51b9 # main as of 2026-05-19
7373
with:
7474
environment: Staging
7575
docker-compose-file: "./docker/compose.app.yml"

.github/workflows/docs.yml

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
name: Docs
2+
3+
# - PR with docs changes: build a /-rooted bundle (preview)
4+
# - push to main with docs changes: build /Apollon/-rooted bundle, deploy
5+
# to GitHub Pages
6+
7+
on:
8+
push:
9+
branches: [main]
10+
paths:
11+
- "docs/**"
12+
- "library/**"
13+
- "pnpm-lock.yaml"
14+
- "pnpm-workspace.yaml"
15+
- ".github/workflows/docs.yml"
16+
pull_request:
17+
paths:
18+
- "docs/**"
19+
- "library/**"
20+
- ".github/workflows/docs.yml"
21+
workflow_dispatch:
22+
23+
permissions:
24+
contents: read
25+
pages: write
26+
id-token: write
27+
28+
concurrency:
29+
group: docs-${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.number) || github.ref }}
30+
cancel-in-progress: true
31+
32+
jobs:
33+
build:
34+
name: Build Docusaurus site
35+
runs-on: ubuntu-latest
36+
timeout-minutes: 15
37+
outputs:
38+
is-production: ${{ steps.flag.outputs.is-production }}
39+
steps:
40+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
41+
42+
- uses: pnpm/action-setup@ac6db6d3c1f721f886538a378a2d73e85697340a # v6.0.8
43+
44+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
45+
with:
46+
node-version-file: ".nvmrc"
47+
cache: "pnpm"
48+
49+
- id: flag
50+
run: |
51+
if [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == "refs/heads/main" ]]; then
52+
echo "is-production=true" >> "$GITHUB_OUTPUT"
53+
else
54+
echo "is-production=false" >> "$GITHUB_OUTPUT"
55+
fi
56+
57+
- run: pnpm install --frozen-lockfile
58+
59+
# Library must be built first — the docs site imports
60+
# `@tumaet/apollon` for the live embed on the homepage.
61+
- run: pnpm --filter @tumaet/apollon run build
62+
63+
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5
64+
with:
65+
path: |
66+
docs/.docusaurus
67+
docs/node_modules/.cache
68+
key: docusaurus-${{ steps.flag.outputs.is-production }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('docs/**/*.{md,mdx,ts,tsx}') }}
69+
restore-keys: |
70+
docusaurus-${{ steps.flag.outputs.is-production }}-${{ hashFiles('pnpm-lock.yaml') }}-
71+
docusaurus-${{ steps.flag.outputs.is-production }}-
72+
73+
- run: pnpm --filter @tumaet/apollon-docs run build
74+
env:
75+
DOCUSAURUS_BASE_URL: ${{ steps.flag.outputs.is-production == 'true' && '/Apollon/' || '/' }}
76+
77+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
78+
with:
79+
name: docs-build
80+
path: docs/build
81+
retention-days: 7
82+
if-no-files-found: error
83+
84+
- if: steps.flag.outputs.is-production == 'true'
85+
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3
86+
with:
87+
path: docs/build
88+
89+
deploy:
90+
name: Deploy to GitHub Pages
91+
needs: build
92+
if: needs.build.outputs.is-production == 'true'
93+
runs-on: ubuntu-latest
94+
environment:
95+
name: github-pages
96+
url: ${{ steps.deployment.outputs.page_url }}
97+
steps:
98+
- id: deployment
99+
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4

0 commit comments

Comments
 (0)