Compare commits

91 Commits

Author SHA1 Message Date
18d5e977e5 🔧 fix: update API path in docker-compose-staging.yml for correct endpoint configuration 2025-10-30 09:44:17 +00:00
ae39987c7d 🔧 fix: update spa.html handling to ensure symlink removal and prevent errors 2025-10-30 09:36:53 +00:00
4893d925c5 🔧 fix: comment out unused SSR path validation logic and update collection check 2025-10-30 09:32:06 +00:00
66225b731a feat: enhance deployment workflow with reload functionality and update SSR cache handling 2025-10-30 09:27:23 +00:00
50b6f4a6e5 feat: add initial webserver setup with Express and proxy middleware 2025-10-30 09:16:07 +00:00
2025a0a71f 🔧 fix: update template handling and svelte compiler options for improved build process 2025-10-30 09:11:44 +00:00
1ae34d6a18 feat: add Copilot instructions and enhance Docker Compose configuration for improved routing 2025-10-30 08:14:44 +00:00
4756eab175 🔧 fix: reorder plugins in esbuild configuration for proper execution 2025-10-30 08:02:59 +00:00
55263a49be fix: update build context for tibiserver-dev service in docker-compose 2025-08-26 09:20:30 +00:00
39caf6f7d6 Refactor code structure for improved readability and maintainability 2025-07-03 11:37:21 +00:00
037b3d5a89 feat: add Tailwind CSS and PostCSS configuration
- Created postcss.config.js to configure PostCSS with Tailwind CSS and Autoprefixer.
- Updated svelte.config.js to enable PostCSS preprocessing.
- Added tailwind.config.js for Tailwind CSS configuration.
- Updated yarn.lock to include new dependencies for Tailwind CSS, PostCSS, and related plugins.
2025-07-03 11:32:23 +00:00
4bbbfc5fee chore: disable ghostMode in esbuild configuration 2025-07-01 12:53:12 +00:00
b4204da0a4 yarn upgrade 2025-07-01 12:50:13 +00:00
ffcded42f3 Aktualisiere Metriken-Logik in App.svelte zur Verwendung von $effect und verbessere die Lesbarkeit 2025-03-27 17:32:55 +00:00
a72780873a Aktualisiere Konfigurationen und entferne nicht benötigte Skripte aus der Umgebung 2025-03-27 17:23:39 +00:00
f66c1fc078 Füge Initialisierungsziel zu Makefile hinzu und aktualisiere Docker-Befehle 2025-03-27 17:07:33 +00:00
cf1acc1d80 Aktualisiere Docker-Images auf die neuesten Versionen und passe die Pfade in der esbuild-Konfiguration an 2025-03-27 16:59:52 +00:00
7a6a2cbd22 Füge Docker- und Babel-Konfigurationen hinzu, aktualisiere Svelte- und Esbuild-Setups, erweitere Typdefinitionen und aktualisiere die README-Datei 2025-03-27 13:52:13 +00:00
77cb64b260 yarn 4 2025-03-27 13:26:28 +00:00
2037953000 yarn upgrade 2025-03-27 12:34:04 +00:00
3a6ff3fa8e Füge ein neues Deployment-Workflow-Skript hinzu und entferne veraltete Skripte 2025-03-27 12:12:55 +00:00
212a9720cf first clean up 2025-03-26 17:44:06 +00:00
4a8864c7b9 CustomTags 2022-11-18 11:47:44 +00:00
30c05143fe Update and rework project structure with new pagebuilder concept. (based on RK Architekten and SFU Politik configs and sources) 2022-11-17 16:01:52 +00:00
825dfc18f9 yarn upgrade 2022-10-11 14:10:53 +00:00
c8443f4d11 yarn upgrade 2022-09-15 16:02:24 +00:00
ac7eec418c docker:start 2022-09-15 15:56:54 +00:00
fef4d3b023 Doppelter Aufruf für das Holen der Page-Contents nach Sprachwechsel gefixed. 2022-07-12 08:45:38 +02:00
1bfa0d8b1b Artikel rendern slug für eventuelle Anker Links. Navigation vereinfacht und Item in eigene Komponente ausgelagert, um später schöner eine Multi-Level Navigation erstellen zu können. Label in Navigation-Collection umbenannt. Home-Page Komponente vereinfacht. Content-Komponente für eventuelles Animated-Ancher-Scrolling erweitert. 2022-07-08 14:44:23 +02:00
345ecb6177 Aktualisieren der auszugebenden Daten-Spalten (fieldviews) in der neuen LinkedEntries Komponente. 2022-07-01 09:08:56 +02:00
dbbd7c63ed Update SLUG field in server side post_create and put_update hooks. 2022-06-30 15:00:18 +02:00
49896d6978 Tags Collection nach unten verschoben. Icon für external Collection geändert. Content Collection erweitert um neues linkedEntries field. 2022-06-30 12:19:10 +02:00
d8e4f9c902 Konfiguration von Seiten-Verknüpfungen nach Gespräch mit Marc geändert. 2022-06-16 09:48:18 +02:00
706ec88576 Kleiner Fix in Content Komponente - Hinzufügen des End-Slash (/) in geändertem Pfad nach Sprach-Wechsel. 2022-06-15 14:18:07 +02:00
0d06a61c7f Typ Select für Artikel hinzugefügt. Artikel-Details Komponenten sind nun für jeden Typ verfügbar, wenn benötigt. 2022-06-15 13:06:43 +02:00
652f15830d Möglichkeit, in die Artikel-Details zu springen implementiert, ohne einen extra URL Pfad zu benötigen. 2022-06-15 11:23:56 +02:00
65e8b7ffc8 Verlinkung zu externen URLs für Article hinzugefügt. 2022-06-15 08:57:51 +02:00
25a39dfac0 Meta Angaben für Content-Seiten hinzugefügt. 2022-06-15 08:40:12 +02:00
ee7ed0db1f Zuweisung von Artikeln zu Seiten möglich. Somit werden keine Content-Blocks mehr benötigt und alle Artikel können über die articles-Collection gepflegt udn zugewiesen werden. 2022-06-14 10:30:40 +02:00
Mario Linz
05fe698af6 Neue Collection für eine einfache Listung von Dateien mit generierung der externen URL. 2022-06-13 18:59:59 +02:00
Mario Linz
2737872396 Activate git lfs. New test collection for external content. 2022-06-13 15:32:05 +02:00
7c712ee7c8 neue Komponente für Artikellisten. Möglichkeit, Artikel Seiten zuzuweisen. 2022-06-13 13:58:04 +02:00
60bd5d21c9 ArticleDetails page vorbereitet. 2022-06-09 15:52:58 +02:00
ddd236af06 Vereinheitlichen der API Parameter für Articles und Content Api Methoden. Interfaces etwas angepasst. 2022-06-09 15:06:16 +02:00
9cf3a814e3 Article-Collection etwas aufgeräumt und in einzelne Files ausgelagert. 2022-06-09 14:24:32 +02:00
de6968f3d8 Generelle Angaben zum Veröffentlichungs-Datum und dessen Check-Interval werden nun berücksichtigt auf der Seite mit abgefragt. 2022-06-09 10:57:55 +02:00
4824effccb Neue Komponente für Article-Media-Image sowie eine allgemeine Image Komponente. Article-Komponente WorkInProgress. 2022-06-09 08:23:39 +02:00
d872767845 Update der starter collections. 2022-06-03 14:43:59 +02:00
432d21daeb Redirekt auf HOME, wenn keine Contentseite gefunden wurde. 2022-06-03 11:12:35 +02:00
cabaaef456 Content Page überarbeitet. Inhalte werden nun auch erneut geholt, wenn sich die URL durch die History ändert. Aktuell statische Texte sind in localization files für en und de ausgelagert. 2022-06-02 11:04:37 +02:00
aaf2860714 svelte-i18n dem Projekt hinzugefügt für die Möglichkeit, statische Texte sauberer an einer zentralen Stelle zu pflegen. Über den Language-Chooser wird die aktuelle locale der Übersetzungen auch gleich mit umgeschaltet. 2022-06-01 08:02:50 +02:00
87aa1689f3 Content-Seiten und Language Chooser + Collections so überarbeitet, dass ein Umschalten zwischen Sprachen und Pages möglich ist. Collection der Seiten wurde um eine Priorität erweitert. Navigation zeigt aktives Item an. Entsprechende CSS Klassen angepasst und für neue Projekte sauberer strukturiert. 2022-05-31 15:55:35 +02:00
fcf5490d5a Content Collection um Tags ChipArray erweitert, um eine Möglichkeit zu schaffen, Stichworte zum Verknüpfen der Seiten zwischen den Sprachen zu schaffen...(WIP) 2022-05-30 16:52:12 +02:00
5d08a96327 Kleinere Anpassungen für Seiten- und Navigations- Bearbeitung. 2022-05-30 15:57:11 +02:00
c67f712280 Collection für Content angepasst. Image Components erweitert. Verschiedene CSS Apassungen der Demo Page 2022-05-30 13:11:51 +02:00
Mario Linz
a2bd10453b Neue -tablist- Property für Collectons. 2022-05-29 22:21:03 +02:00
Mario Linz
de7ddc1097 Collection general > tabs config angepasst. Referenzen werden nun über die subFields Property definiert. (mehr flexibel) 2022-05-27 23:12:27 +02:00
9188148fe7 Navigation und Content-Pages so angepasst, dass über einen Language-Chooser die Sprache der Seite gewechselt werden kann und automatisch auch der reload der Content-Page angestoßen wird. 2022-05-25 15:37:15 +02:00
516c35dcb4 Weitere Verbesserungen des Starter Projekts für neue Projekte. 2022-05-25 12:10:29 +02:00
47fdee2396 Starter Projekt angefangen, etwas aufzubohren und ein paar grundlegend benötigte Collections, Teheming-Styles und Komponenten hinzugefügt. (WIP) 2022-05-24 16:44:55 +02:00
f4b6bb17ca Möglichkeit, einen Typ für eine ViewColumn anzugeben. Dieser Typ überschreibt den Typ des Fields. 2022-05-24 11:33:23 +02:00
87fd3c6148 Neue Tabs beispielhaft in general Collection konfiguriert. 2022-05-24 10:25:56 +02:00
d0c6ad4092 Neue Collections für Navigations und Sprachen angelegt. MediaLib erstmal aus Config entfernt. Unbenutzte Files entfernt. 2022-05-16 08:53:08 +02:00
eedb794251 Beispiel Collection der Media-Library committet. 2022-05-02 10:39:13 +02:00
c1894528b7 Merge branch 'master' of ssh://gitbase.de:2222/cms/tibi-svelte-starter 2022-04-26 11:15:53 +02:00
09a7688e29 yarn 2, package upgrade 2022-04-26 11:14:37 +02:00
75534213e8 Erste Collections für eine Media-Library. Weitere Collections für spätere neue Projekte hinzugefügt. (alles WorkInProgress) 2022-04-14 12:23:21 +02:00
fd613e5a7d fixed publishLocation 2022-04-12 17:07:21 +02:00
Mario Linz
ef8d571ac5 Prototype Article und Theme Files hinzugefügt 2022-04-01 22:46:54 +02:00
4aec1bd712 XXErste Collections für eine Media-Library. Weitere Collections für spätere neue Projekte hinzugefügt. (alles WorkInProgress) 2022-04-01 14:16:41 +02:00
Mario Linz
c00f5a9fb3 Prototyp - Neue allgemeine Collection für Artikel. Durch das Svend-Walter Projekt und ein paaar Gesprächen mit Daniela, was in einem Projekt typischerwise für typische Inhalts-Artikel benötigt wird, ist diese Collection entstanden. 2022-03-20 15:43:08 +01:00
Mario Linz
88c5147363 Collections für neue Projekte optimiert...work in progress... 2022-03-18 21:33:01 +01:00
5caa62eb7e Erste kleine Anpassungen am Tibi-Svelte-Starter um später mehr Zeit in neuen Projekten zu sparen. Hier werden noch weitere Anpassungen folgen, die grundlegend in den meisten Projekten benötigt werden. 2022-03-17 11:12:06 +01:00
75a8906d4a modrewrite proxy added 2022-03-14 17:18:18 +01:00
0ac8817805 cypress tsconfig.json fix 2022-02-26 17:43:34 +01:00
ff7441f3c5 fixed cy:docker: 2022-02-26 11:39:25 +01:00
5843680e14 renamed to tibi-svelte-starter 2022-02-26 11:09:53 +01:00
66d8313316 api schema 2022-02-01 19:03:49 +01:00
24d2aaaa50 ssr 404 2022-01-25 16:21:54 +01:00
85fd41ce58 fixed ssr 2022-01-19 18:50:58 +01:00
9c559f7020 upgrade 2021-12-08 12:56:19 +01:00
bd087ae658 fixed secret exploit via ssr code sourcemap 2021-09-14 15:51:05 +02:00
f9fe8fd735 cypress and instanbul 2021-09-14 14:45:47 +02:00
786fd12f34 browsersync 2021-09-14 13:26:35 +02:00
95c2950193 sourcemap tests 2021-09-13 18:12:40 +02:00
0bf64b1031 Merge branch 'master' of ssh://gitbase.de:2222/cms/wmbasic-svelte-starter 2021-08-16 11:08:19 +02:00
f6ac48daab using wmbasic-api-types 2021-08-16 11:07:11 +02:00
a232a0119e „api/hooks/types.d.ts“ ändern 2021-04-29 15:43:03 +02:00
82903a8029 readme 2021-03-30 17:45:09 +02:00
0aca310a5e init 2021-03-22 16:54:31 +01:00
2ee7f650db init 2021-03-22 15:59:05 +01:00
643 changed files with 9644 additions and 16857 deletions

1
.basic-auth-code Normal file
View File

@@ -0,0 +1 @@
code:$apr1$AeePIAei$E9E6E6jtFFtwmtGhIEG.Y/

2
.basic-auth-web Normal file
View File

@@ -0,0 +1,2 @@
code:$apr1$AeePIAei$E9E6E6jtFFtwmtGhIEG.Y/
web:$apr1$/zc/TBtD$ZGr3RqPiULYMD0kJUup5E0

View File

@@ -1,191 +0,0 @@
kind: pipeline
type: docker
name: default
workspace:
path: /drone/workdir
steps:
- name: load dependencies
image: node
pull: if-not-exists
environment:
FORCE_COLOR: "true"
volumes:
- name: cache
path: /cache
commands:
- mkdir -p /cache/node_modules
- mkdir -p /cache/user-cache
- ln -s /cache/node_modules ./node_modules
- ln -s /cache/user-cache ~/.cache
- echo cache=/cache/npm-cache >> .npmrc
- "echo 'enableGlobalCache: false' >> .yarnrc"
- 'echo ''cacheFolder: "/cache/yarn-cache"'' >> .yarnrc'
- 'echo ''yarn-offline-mirror "/cache/npm-packages-offline-cache"'' >> .yarnrc'
- "echo 'yarn-offline-mirror-pruning: true' >> .yarnrc"
- cat .yarnrc
- yarn install --verbose --frozen-lockfile
- name: mongo
image: mongo
pull: if-not-exists
detach: true
- name: maildev
image: node
pull: if-not-exists
volumes:
- name: cache
path: /cache
commands:
- yarn run maildev --web 80 --smtp 25 -v --hide-extensions=STARTTLS
detach: true
- name: liveserver
image: node
pull: if-not-exists
volumes:
- name: cache
path: /cache
commands:
- yarn run -- live-server --no-browser --port=80 --ignore='*' --entry-file=spa.html --no-css-inject --proxy=/api:http://tibi-server:8080/api/v1/_/__NAMESPACE__ dist
detach: true
- name: tibi-server
image: registry.webmakers.de/tibi/tibi-server
pull: never
environment:
DB_DIAL: mongodb://mongo
API_PORT: 8080
MAIL_HOST: maildev:25
detach: true
- name: cypress run
image: cypress/base
pull: if-not-exists
volumes:
- name: cache
path: /cache
environment:
FORCE_COLOR: "true"
CYPRESS_BASE_URL: http://liveserver
CYPRESS_CI: "true"
CYPRESS_mongodbUri: mongodb://mongo
CYPRESS_tibiApiUrl: http://tibi-server:8080/api/v1
CYPRESS_projectApiConfig: /drone/workdir/api/config.yml
commands:
- ln -s /cache/user-cache ~/.cache
- yarn build:instanbul
- yarn cy:run
- yarn run nyc report --exclude-after-remap false
- name: modify master config
image: bash
pull: if-not-exists
commands:
- bash scripts/modify-config.sh master __MASTER_URL__
when:
branch: [master]
- name: modify dev config
image: bash
pull: if-not-exists
commands:
- bash scripts/modify-config.sh dev __DEV_URL__
when:
branch: [dev]
- name: build
image: node
pull: if-not-exists
volumes:
- name: cache
path: /cache
commands:
- yarn build
- name: build ssr
image: node
pull: if-not-exists
volumes:
- name: cache
path: /cache
commands:
- yarn build:server
- name: build legacy
image: node
pull: if-not-exists
volumes:
- name: cache
path: /cache
commands:
- yarn build:legacy
- name: modify html
image: bash
pull: if-not-exists
commands:
- bash scripts/preload-meta.sh public/spa.html
- bash scripts/preload-meta.sh public/spa.html > dist/spa.html
- export stamp=`date +%s`
- echo $$stamp
- sed -i s/__TIMESTAMP__/$$stamp/g dist/spa.html
- sed -i s/__TIMESTAMP__/$$stamp/g dist/serviceworker.js
- cat dist/serviceworker.js
- cp dist/spa.html api/templates/spa.html
- cat dist/spa.html
- name: deploy master
image: instrumentisto/rsync-ssh
pull: if-not-exists
environment:
RSYNC_USER: USER_PROJECT_master
RSYNC_PASS:
from_secret: rsync_master
commands:
- apk add --no-cache sshpass
- scripts/deploy.sh ftp1.webmakers.de $${RSYNC_USER} $${RSYNC_PASS}
when:
branch: [master]
event: [push]
- name: deploy dev
image: instrumentisto/rsync-ssh
pull: if-not-exists
environment:
RSYNC_USER: USER_PROJECT_dev
RSYNC_PASS:
from_secret: rsync_dev
commands:
- apk add --no-cache sshpass
- scripts/deploy.sh ftp1.webmakers.de $${RSYNC_USER} $${RSYNC_PASS}
when:
branch: [dev]
event: [push]
- name: prepare notify
image: cypress/base
pull: if-not-exists
commands:
- find cypress -type f -wholename "cypress/videos/*" -or -wholename "cypress/screenshots/*" | tar -cvf cypress-media.tar -T -
when:
status:
- failure
- name: notify
image: drillster/drone-email
pull: if-not-exists
settings:
from: noreply@ci.gitbase.de
host: smtp.basehosts.de
attachment: cypress-media.tar
when:
status:
- failure
volumes:
- name: cache
host:
path: /tmp/cache/drone/${DRONE_REPO}

23
.env Normal file
View File

@@ -0,0 +1,23 @@
PROJECT_NAME=__PROJECT_NAME__
TIBI_PREFIX=tibi
TIBI_NAMESPACE=__TIBI_NAMESPACE__
CODER_UID=100
CODER_GID=101
SENTRY_URL=https://sentry.basehosts.de
SENTRY_ORG=webmakers
SENTRY_PROJECT=
RSYNC_HOST=ftp1.webmakers.de
RSYNC_PORT=22223
PRODUCTION_SERVER=dock4.basehosts.de
PRODUCTION_TIBI_PREFIX=wmbasic
PRODUCTION_PATH=/webroots2/customers/_CUSTOMER_ID_/____
STAGING_PATH=/staging/__ORG__/__PROJECT__/dev
LIVE_URL=https://www
STAGING_URL=https://dev-__PROJECT_NAME__.staging.testversion.online
#START_SCRIPT=:ssr

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
.yarn/cache/** filter=lfs diff=lfs merge=lfs -text

201
.gitea/workflows/deploy.yml Normal file
View File

@@ -0,0 +1,201 @@
name: deploy to production
on: "push"
# push:
# branches:
# - master
jobs:
deploy:
name: deploy
runs-on: ubuntu-latest
container:
image: gitbase.de/actions/ubuntu:latest
volumes:
- /data:/data
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
lfs: true
submodules: true
- run: |
git fetch --force --tags
# setup node 20
- name: setup node 20
uses: actions/setup-node@v3
with:
node-version: 20
- name: install dependencies
run: |
npm install -g yarn
yarn install
- name: modify config
run: |
sed -i 's#\(sentryEnvironment.*\)".*"#\1"${GITHUB_REF_NAME}"#g' frontend/src/config.ts
sed -i 's#//\( sentry\\.init.*\)#\1#g' frontend/src/config.ts
sed -i 's#metrictCall = false#metrictCall = true#g' frontend/src/config.ts
set -o allexport
. ./.env
echo "PROJECT_RELEASE=${SENTRY_PROJECT}.r`git rev-list HEAD --count`-`git describe --all --long | sed 's+/+-+'`" >> .env
. ./.env
set +o allexport
echo ______ .env ______
cat .env
echo
sed -i 's#\(const release = \).*#\1"'${PROJECT_RELEASE}'"#g' api/hooks/config-client.js
sed -i 's#\(const originURL = \).*#\1"'${LIVE_URL}'"#g' api/hooks/config-client.js
# bash scripts/preload-meta.sh frontend/spa.html
# bash scripts/preload-meta.sh frontend/spa.html > frontend/_spa.html
# cp frontend/_spa.html frontend/spa.html
export stamp=`date +%s`
sed -i s/__TIMESTAMP__/$stamp/g frontend/spa.html
# sed -i s/__TIMESTAMP__/$stamp/g frontend/serviceworker.js
# cat frontend/serviceworker.js
test -d api/templates && test -L api/templates/spa.html && rm api/templates/spa.html || test -d api/templates && test -f api/templates/spa.html && rm api/templates/spa.html
test -d api/templates && cp frontend/spa.html api/templates/spa.html
cp frontend/spa.html api/templates/spa.html
echo ______ frontend/spa.html ______
cat frontend/spa.html
sed -i 's#\(PREVIEW_URL=\).*#\1'${LIVE_URL}/preview'#g' api/config.yml.env
echo ______ api/config.yml.env ______
cat api/config.yml.env
- name: build
env:
FORCE_COLOR: "true"
run: |
yarn build
- name: build admin
env:
FORCE_COLOR: "true"
run: |
yarn build:admin
- name: build ssr
env:
FORCE_COLOR: "true"
run: |
yarn build:server
- name: build legacy
env:
FORCE_COLOR: "true"
run: |
yarn build:legacy
- name: staging
# only if branch is dev
if: github.ref == 'refs/heads/dev'
env:
# /data/ORG/PROJECT/BRANCH
API_BASEDIR: /data/${{ github.repository }}/${{ github.ref_name }}
COMPOSE_PROJECT_NAME: ${{ github.repository }}-${{ github.ref_name }}
run: |
# read .env
set -o allexport
. ./.env
. ./api/config.yml.env
set +o allexport
# replace / with -
COMPOSE_PROJECT_NAME=`echo $COMPOSE_PROJECT_NAME | sed 's+/+-+g'`
mkdir -p $API_BASEDIR/frontend
rsync -av api $API_BASEDIR/
rsync -av frontend/dist $API_BASEDIR/frontend/
rsync -av frontend/assets $API_BASEDIR/frontend/
sed -i 's#\(PREVIEW_URL=\).*#\1'${STAGING_URL}/preview'#g' $API_BASEDIR/api/config.yml.env
docker compose -f docker-compose-staging.yml -p $COMPOSE_PROJECT_NAME up -d --build --remove-orphans
reloadUrl=${STAGING_URL}/api/_/admin/reload
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${ADMIN_TOKEN}" -d '{}' "${reloadUrl}"
# clear ssr cache
ssrUrl=${STAGING_URL}/api/ssr
curl -X POST -H "Content-Type: application/json" -d '{}' "${ssrUrl}?clear=1"
- name: deploy
# only if branch is master
if: github.ref == 'refs/heads/master'
env:
RSYNC_USER: ${{ github.repository }}
RSYNC_PASS: ${{ github.token }}
BRANCH: ${{ github.ref_name }}
run: |
# read .env
set -o allexport
. ./.env
. ./api/config.yml.env
set +o allexport
# if RSYNC_USER or RSYNC_KEY is not set, exit
if [ -z "${RSYNC_USER}" ]; then
echo "RSYNC_USER missing, exiting"
exit 1
fi
if [ -z "${RSYNC_PASS}" ]; then
echo "RSYNC_PASS missing, exiting"
exit 1
fi
if [ -z "${RSYNC_HOST}" ]; then
echo "RSYNC_HOST missing, exiting"
exit 1
fi
if [ -z "${RSYNC_PORT}" ]; then
echo "RSYNC_PORT missing, exiting"
exit 1
fi
echo "Deploying ${BRANCH} to ${RSYNC_HOST} on port ${RSYNC_PORT} as ${RSYNC_USER}"
excludes=""
if [ "${BRANCH}" = "master" ]; then
excludes='--exclude=src --exclude=*.map'
echo "master deploy, excluding $excludes"
fi
SSH_CMD="sshpass -p ${RSYNC_PASS} ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p ${RSYNC_PORT} -l ${RSYNC_USER}"
# sync frontend
rsync -rlcgD --perms -i -u -v --stats --progress \
--delete \
-e "${SSH_CMD}" \
$excludes \
frontend/ \
${RSYNC_HOST}:./frontend/ \
# sync api config
rsync -rlcgD --perms -i -u -v --stats --progress \
--delete \
-e "${SSH_CMD}" \
api/ \
${RSYNC_HOST}:./api/
# create media directory
mkdir media
chmod 770 media
rsync -rlcgD --perms -i -u -v --stats --progress \
-e "${SSH_CMD}" \
media \
${RSYNC_HOST}:./
reloadUrl=${LIVE_URL}/api/_/admin/reload
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${ADMIN_TOKEN}" -d '{}' "${reloadUrl}"
# clear ssr cache
ssrUrl=${LIVE_URL}/api/ssr
curl -X POST -H "Content-Type: application/json" -d '{}' "${ssrUrl}?clear=1"

25
.github/copilot-instructions.md vendored Normal file
View File

@@ -0,0 +1,25 @@
# Copilot Instructions
## Common Instructions
- Look in the problems tab for any errors or warnings in the code
- Follow the existing code style and conventions used in the project
- Write clear and concise comments where necessary to explain complex logic
- Ensure code is modular and reusable where possible
- Write unit tests for new functionality and ensure existing tests pass, but only if there is a configured testing framework
- Avoid introducing new dependencies unless absolutely necessary, but ask the user if there is a specific library they want to use
- If you are unsure about any requirements or details, ask the user for clarification before proceeding
- Respect a11y and localization best practices if applicable, optimize for WCAG AA standards
## Toolchain
- See .env in root for project specific environment variables
- See Makefile for starting up the development environment with Docker
- If development environment is running, access the website at: https://${PROJECT_NAME}.code.testversion.online/ or ask the user for the correct URL
- You can also use Browser MCP, so ask user to connect if needed
- Esbuild is used, watching for changes in files to rebuild automatically
- To force a restart of the frontend build and dev-server run: `make restart-frontend`
- Backend is tibi-server configured in /api/ folder and also restarted if changes are detected in this folder
- To show last X lines of docker logs run: `make docker-logs-X` where X is the number
of lines you want to see
- For a11y testing use the MCP a11y tools if available

29
.gitignore vendored
View File

@@ -1,17 +1,14 @@
_temp/
node_modules/
dist/
build/
build_ssr/
stat/
api/hooks/lib/app.server*
node_modules
media
tmp
_temp
frontend/dist
yarn-error.log
/media/
/test.js
/api/templates/spa.html
/api/hooks/lib/app.server*
cypress/_old
cypress/videos
cypress/screenshots
.~lock.*
coverage/
.nyc_output/
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

View File

@@ -10,7 +10,7 @@
"check-parameters"
],
"no-var-keyword": true,
"svelteSortOrder": "scripts-markup-styles",
"svelteSortOrder": "scripts-options-markup-styles",
"svelteStrictMode": true,
"svelteBracketNewLine": true,
"svelteAllowShorthand": true,

15
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,15 @@
{
// Verwendet IntelliSense zum Ermitteln möglicher Attribute.
// Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen.
// Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "pwa-msedge",
"request": "launch",
"name": "Launch Edge against localhost",
"url": "http://localhost:5501/",
"webRoot": "${workspaceFolder}/dist"
}
]
}

53
.vscode/settings.json vendored
View File

@@ -1,34 +1,33 @@
{
"eslint.alwaysShowStatus": true,
"tslint.autoFixOnSave": true,
"editor.tabCompletion": "on",
"diffEditor.codeLens": true,
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[markdown]": {
"editor.wordWrap": "on",
"editor.defaultFormatter": "vscode.markdown-language-features"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"liveServer.settings.root": "/dist",
"liveServer.settings.file": "spa.html",
"liveServer.settings.port": 5502,
"liveServer.settings.proxy": {
"enable": true,
"baseUri": "/api",
"proxyUri": "http://127.0.0.1:8080/api/v1/_/__NAMESPACE__"
},
"extensions.ignoreRecommendations": true,
"files.autoSave": "off",
"typescript.tsc.autoDetect": "off",
"npm.autoDetect": "off",
"debug.allowBreakpointsEverywhere": true,
"html.autoClosingTags": false,
"yaml.schemas": {
"node_modules/tibi-types/schemas/api-config/config.json": "api/config.y*ml",
"node_modules/tibi-types/schemas/api-config/collection.json": "api/collections/*.y*ml",
"node_modules/tibi-types/schemas/api-config/field.json": "api/collections/fields/*.y*ml"
"./../../cms/tibi-types/schemas/api-config/config.json": "api/config.y*ml",
"./../../cms/tibi-types/schemas/api-config/collection.json": "api/collections/*.y*ml",
"./../../cms/tibi-types/schemas/api-config/field.json": "api/collections/fields/*.y*ml",
"./../../cms/tibi-types/schemas/api-config/fieldArray.json": "api/collections/fieldLists/*.y*ml",
"./../../cms/tibi-types/schemas/api-config/job.json": "api/jobs/*.y*ml",
"./../../cms/tibi-types/schemas/api-config/assets.json": "api/assets/*.y*ml"
},
"yaml.customTags": ["!include scalar"]
"yaml.customTags": ["!include scalar"],
"filewatcher.commands": [
{
"match": "/api/.*(\\.ya?ml|js|env)$",
"isAsync": false,
"cmd": "cd ${currentWorkspace} && scripts/reload-local-tibi.sh",
"event": "onFileChange"
}
],
"i18n-ally.localesPaths": ["frontend/locales"],
"i18n-ally.sourceLanguage": "de",
"i18n-ally.keystyle": "nested",
"[svelte]": {
"editor.defaultFormatter": "svelte.svelte-vscode"
},
"files.associations": {
"css": "tailwindcss"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More