From dca3ce93e63630bb2dadd1dc4fbb6d06e620321c Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Thu, 16 Jul 2026 01:21:29 +0200 Subject: [PATCH] refresh --- .gitea/workflows/deploy.yml | 115 ++++++++++++++++++ .gitlab-ci.yml | 0 .projektstructure.txt | 73 +++++++++++ README.md | 0 api/.gitkeep | 0 config/.gitkeep | 0 config/community.php | 0 config/config.php | 0 config/fileload.php | 0 config/prod/.gitkeep | 0 config/prod/db.php | 0 config/prod/domaindata.php | 0 config/prod/emailtemplates.php | 0 config/prod/settings.php | 0 config/staging/.gitkeep | 0 config/staging/db.php | 0 config/staging/domaindata.php | 0 config/staging/emailtemplates.php | 0 config/staging/settings.php | 0 debug/.gitkeep | 0 partials/.gitkeep | 0 partials/landing/account/dashboard.php | 0 partials/landing/account/login.php | 0 partials/landing/account/register.php | 0 partials/landing/account/verify.php | 0 partials/landing/community/index.php | 0 partials/landing/community/thread.php | 0 partials/landing/main/home.php | 0 partials/landing/search/search.php | 0 partials/structure/layout_end.php | 0 partials/structure/layout_start.php | 0 partials/structure/matomo.php | 0 partials/structure/nav.php | 0 public/.gitkeep | 0 public/.htaccess | 0 public/assets/bilder/404.jpg | Bin public/assets/bilder/404portrait.jpg | Bin .../bilder/email/banner_emailconfirm.jpg | Bin .../bilder/email/banner_passwordreset.jpg | Bin public/assets/bilder/email/banner_welcome.jpg | Bin public/assets/bilder/email/logo_mail.png | Bin public/assets/bilder/logo_female.png | Bin public/assets/bilder/logo_male.png | Bin public/assets/bilder/welcome.jpg | Bin public/assets/css/app.css | 0 .../assets/fonts/KidsHandwriting-Regular.ttf | Bin .../assets/fonts/KidsHandwriting-Regular.woff | Bin .../fonts/KidsHandwriting-Regular.woff2 | Bin public/assets/js/app.js | 0 public/index.php | 0 public/page/community.php | 0 public/page/community_thread.php | 0 public/page/dashboard.php | 0 public/page/debug.php | 0 public/page/index.php | 0 public/page/login.php | 0 public/page/logout.php | 0 public/page/register.php | 0 public/page/reset.php | 0 public/page/retool/emailtemplate_bridge.php | 0 public/page/retool/emailtemplate_sender.php | 0 public/page/search.php | 0 public/page/verify.php | 0 schema.sql | 0 src/.gitkeep | 0 src/App/AccountPages.php | 0 src/App/App.php | 0 src/App/Assets.php | 0 src/App/Auth.php | 0 src/App/Community.php | 0 src/App/Config.php | 0 src/App/Crypto.php | 0 src/App/Database.php | 0 src/App/Flash.php | 0 src/App/I18n.php | 0 src/App/Mailer.php | 0 src/App/Request.php | 0 src/App/Search.php | 0 src/App/SessionManager.php | 0 src/helpers.php | 0 tools/.gitkeep | 0 81 files changed, 188 insertions(+) create mode 100644 .gitea/workflows/deploy.yml mode change 100644 => 100755 .gitlab-ci.yml create mode 100755 .projektstructure.txt mode change 100644 => 100755 README.md mode change 100644 => 100755 api/.gitkeep mode change 100644 => 100755 config/.gitkeep mode change 100644 => 100755 config/community.php mode change 100644 => 100755 config/config.php mode change 100644 => 100755 config/fileload.php mode change 100644 => 100755 config/prod/.gitkeep mode change 100644 => 100755 config/prod/db.php mode change 100644 => 100755 config/prod/domaindata.php mode change 100644 => 100755 config/prod/emailtemplates.php mode change 100644 => 100755 config/prod/settings.php mode change 100644 => 100755 config/staging/.gitkeep mode change 100644 => 100755 config/staging/db.php mode change 100644 => 100755 config/staging/domaindata.php mode change 100644 => 100755 config/staging/emailtemplates.php mode change 100644 => 100755 config/staging/settings.php mode change 100644 => 100755 debug/.gitkeep mode change 100644 => 100755 partials/.gitkeep mode change 100644 => 100755 partials/landing/account/dashboard.php mode change 100644 => 100755 partials/landing/account/login.php mode change 100644 => 100755 partials/landing/account/register.php mode change 100644 => 100755 partials/landing/account/verify.php mode change 100644 => 100755 partials/landing/community/index.php mode change 100644 => 100755 partials/landing/community/thread.php mode change 100644 => 100755 partials/landing/main/home.php mode change 100644 => 100755 partials/landing/search/search.php mode change 100644 => 100755 partials/structure/layout_end.php mode change 100644 => 100755 partials/structure/layout_start.php mode change 100644 => 100755 partials/structure/matomo.php mode change 100644 => 100755 partials/structure/nav.php mode change 100644 => 100755 public/.gitkeep mode change 100644 => 100755 public/.htaccess mode change 100644 => 100755 public/assets/bilder/404.jpg mode change 100644 => 100755 public/assets/bilder/404portrait.jpg mode change 100644 => 100755 public/assets/bilder/email/banner_emailconfirm.jpg mode change 100644 => 100755 public/assets/bilder/email/banner_passwordreset.jpg mode change 100644 => 100755 public/assets/bilder/email/banner_welcome.jpg mode change 100644 => 100755 public/assets/bilder/email/logo_mail.png mode change 100644 => 100755 public/assets/bilder/logo_female.png mode change 100644 => 100755 public/assets/bilder/logo_male.png mode change 100644 => 100755 public/assets/bilder/welcome.jpg mode change 100644 => 100755 public/assets/css/app.css mode change 100644 => 100755 public/assets/fonts/KidsHandwriting-Regular.ttf mode change 100644 => 100755 public/assets/fonts/KidsHandwriting-Regular.woff mode change 100644 => 100755 public/assets/fonts/KidsHandwriting-Regular.woff2 mode change 100644 => 100755 public/assets/js/app.js mode change 100644 => 100755 public/index.php mode change 100644 => 100755 public/page/community.php mode change 100644 => 100755 public/page/community_thread.php mode change 100644 => 100755 public/page/dashboard.php mode change 100644 => 100755 public/page/debug.php mode change 100644 => 100755 public/page/index.php mode change 100644 => 100755 public/page/login.php mode change 100644 => 100755 public/page/logout.php mode change 100644 => 100755 public/page/register.php mode change 100644 => 100755 public/page/reset.php mode change 100644 => 100755 public/page/retool/emailtemplate_bridge.php mode change 100644 => 100755 public/page/retool/emailtemplate_sender.php mode change 100644 => 100755 public/page/search.php mode change 100644 => 100755 public/page/verify.php mode change 100644 => 100755 schema.sql mode change 100644 => 100755 src/.gitkeep mode change 100644 => 100755 src/App/AccountPages.php mode change 100644 => 100755 src/App/App.php mode change 100644 => 100755 src/App/Assets.php mode change 100644 => 100755 src/App/Auth.php mode change 100644 => 100755 src/App/Community.php mode change 100644 => 100755 src/App/Config.php mode change 100644 => 100755 src/App/Crypto.php mode change 100644 => 100755 src/App/Database.php mode change 100644 => 100755 src/App/Flash.php mode change 100644 => 100755 src/App/I18n.php mode change 100644 => 100755 src/App/Mailer.php mode change 100644 => 100755 src/App/Request.php mode change 100644 => 100755 src/App/Search.php mode change 100644 => 100755 src/App/SessionManager.php mode change 100644 => 100755 src/helpers.php mode change 100644 => 100755 tools/.gitkeep diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..577e2ca --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,115 @@ +name: Deploy + +on: + push: + branches: + - main + - develop + +env: + BASE_DIRS: "src public api partials tools" + CONFIG_BASE_DIR: "config" + +jobs: + deploy: + runs-on: private-server + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install lftp + shell: sh + run: | + if command -v lftp >/dev/null 2>&1; then + echo "✅ lftp bereits installiert" + elif command -v apk >/dev/null 2>&1; then + apk add --no-cache lftp ca-certificates + elif command -v apt-get >/dev/null 2>&1; then + apt-get update + apt-get install -y lftp ca-certificates + else + echo "❌ Kein unterstützter Paketmanager gefunden" + exit 1 + fi + + - name: Set environment + run: | + if [ "${{ gitea.ref_name }}" = "main" ]; then + echo "TARGET_PATH=${{ vars.FTP_PATH_PROD }}" >> "$GITHUB_ENV" + echo "CONFIG_ENV_DIR=config/prod" >> "$GITHUB_ENV" + elif [ "${{ gitea.ref_name }}" = "develop" ]; then + echo "TARGET_PATH=${{ vars.FTP_PATH_STAGING }}" >> "$GITHUB_ENV" + echo "CONFIG_ENV_DIR=config/staging" >> "$GITHUB_ENV" + else + echo "Unsupported branch" + exit 1 + fi + + - name: Debug workspace + run: | + echo "📂 CI Workspace:" + pwd + ls -la + + - name: Deploy via FTPS + run: | + set -e + + echo "🚀 Deploy to ${TARGET_PATH}" + + VALID_DIRS="" + + for d in $BASE_DIRS; do + if [ -d "$d" ]; then + VALID_DIRS="$VALID_DIRS $d" + else + echo "⚠️ Überspringe fehlendes Verzeichnis: $d" + fi + done + + if [ -z "$VALID_DIRS" ]; then + echo "❌ Kein deploybares Verzeichnis gefunden." + exit 1 + fi + + for d in $VALID_DIRS; do + echo "🔁 ${d}/ → ${TARGET_PATH}${d}/" + lftp -u "${{ secrets.FTP_USER }}","${{ secrets.FTP_PASSWORD }}" "${{ vars.FTP_HOST }}" -e " + set ftp:ssl-force true; + set ftp:passive-mode true; + set ftp:ssl-protect-data true; + set ssl:verify-certificate no; + mirror -R --delete --exclude .gitkeep ${d}/ ${TARGET_PATH}${d}/; + bye + " || exit 1 + done + + if [ -d "$CONFIG_BASE_DIR" ] && [ -d "$CONFIG_ENV_DIR" ]; then + echo "🧩 Baue gemischtes Config-Verzeichnis" + + rm -rf .ci_config_deploy + mkdir -p .ci_config_deploy + + for f in ${CONFIG_BASE_DIR}/*.php; do + [ -f "$f" ] && cp "$f" .ci_config_deploy/ + done + + cp -R ${CONFIG_ENV_DIR}/. .ci_config_deploy/ + + echo "🔁 config → ${TARGET_PATH}${CONFIG_BASE_DIR}/" + + lftp -u "${{ secrets.FTP_USER }}","${{ secrets.FTP_PASSWORD }}" "${{ vars.FTP_HOST }}" -e " + set ftp:ssl-force true; + set ftp:passive-mode true; + set ftp:ssl-protect-data true; + set ssl:verify-certificate no; + lcd .ci_config_deploy; + mirror -R --delete --exclude .gitkeep ./ ${TARGET_PATH}${CONFIG_BASE_DIR}/; + bye + " || exit 1 + else + echo "⚠️ Config-Deploy übersprungen: ${CONFIG_BASE_DIR} oder ${CONFIG_ENV_DIR} fehlt" + fi + + echo "✅ Deploy abgeschlossen" \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml old mode 100644 new mode 100755 diff --git a/.projektstructure.txt b/.projektstructure.txt new file mode 100755 index 0000000..0404e4f --- /dev/null +++ b/.projektstructure.txt @@ -0,0 +1,73 @@ +Anweisung: Projektstruktur (Basis-Template) wie in „papa-kind-treff“ + +Ziel +- Erstelle ein neues Projekt bzw. aktualisiere das aktuelle mit exakt der gleichen Grundstruktur wie in „papa-kind-treff“. +- Fokus auf Hauptordner und deren Zweck; keine projektspezifischen Sonderordner (z. B. Community) anlegen. +- Inhalte können minimal sein, aber alle Pfade müssen existieren. +- In Ordnern, die noch keine Dateien beinhalten, muss eine leere Datei mit dem Namen .gitkeep erstellt werden. +- Bestehende Dateien nicht überschreiben; wenn nötig, Inhalte behutsam an die neue Logik anpassen. + +Verzeichnisstruktur (Pflichtordner) +- api/ +- config/ +- debug/ +- partials/ +- public/ +- src/ +- tools/ +- README.md +- schema.sql +- .gitlab-ci.yml + +Details je Ordner + +config/ +- Enthält alle Konfigurationen. +- Muss Subordner für Umgebungen haben: z. B. prod/ und staging/. +- In den Umgebungsordnern liegen Basis-Konfigurationen (z. B. db.php, settings.php, emailtemplates.php, domaindata.php). +- Hinweis: Die Umgebungs-Subordner werden beim Deployment in den root-Config kopiert; daher ist hier keine weitere Unterscheidung nötig. +- Falls Dateien fehlen, lege sie mit minimalem Basisinhalt an (z. B. PHP-Array/Kommentar), ohne vorhandene Inhalte zu überschreiben. + +api/ +- Schnittstellen/Endpunkte. +- Kann zunächst leer bleiben; dann .gitkeep anlegen. + +debug/ +- Debug-Hilfen, Logs oder Debug-Skripte. +- Wenn leer: .gitkeep. + +partials/ +- Nur die Unterscheidung in: + - landing/ + - structure/ +- landing/: Platz für seitenbezogene Teilausschnitte. +- structure/: Layout-Grundbausteine (z. B. layout_start.php, layout_end.php, nav.php, matomo.php) als Beispieldaten. + +public/ +- Webroot. +- Muss assets/ enthalten mit Unterordnern: bilder/, fonts/, js/, css/ (Dateien optional). +- Muss index.php enthalten mit Basis-Logic (z. B. Entry-Point/Router/Bootstrap). + +src/ +- Backend/Business-Logik und Kernklassen. +- Enthält App- oder Domain-Code (z. B. Auth, Database, Mailer, Config, Request, Assets usw.). +- Lege eine kurze Beschreibung an, wofür src gedacht ist (Kommentar oder README im Ordner). + +tools/ +- Entwicklungs-/Wartungs-Tools, Skripte oder Utilities. +- Inhaltlich analog zu src gedacht, aber für interne Werkzeuge. + +Datei-Inhalte (minimal, aber vorhanden) +- .gitkeep: leer. +- README.md, schema.sql, .gitlab-ci.yml: leer oder mit kurzem Platzhaltertext. +- PHP-Dateien: leer oder mit kurzem Kommentar, z. B. "