From 4af606bcc1b85015f847f6c5032701adf3e7389d Mon Sep 17 00:00:00 2001 From: Magicpotter Date: Wed, 7 Jan 2026 16:04:55 +0100 Subject: [PATCH] README.md aktualisiert --- README.md | 179 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 100 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index 9f631c4..17b144d 100644 --- a/README.md +++ b/README.md @@ -1,86 +1,107 @@ -chatgpt-agent % bash -lc cat /home/oai/share/report.md | sed -n '1,20p' - - -## Admin‑Zugang - - -chatgpt-agent % bash -lc cat /home/oai/share/report.md | sed -n '121,140p' - - -- Melde dich unter `/admin/login` an. Ein erster Admin‑Benutzer kann via `php artisan tinker` erstellt werden: - - -```php -\App\Models\User::create([ -'name' => 'Admin', -'username' => 'admin', -'email' => 'admin@example.com', -'password' => bcrypt('geheim'), -'status' => \App\UserStatus::Active, -]); -``` - - -- Nach dem Login stehen Dashboard, Beitragsverwaltung, Kategorien, Slider und Einstellungen zur Verfügung【260995794809889†L45-L90】. Beachte, dass nur Benutzer mit der Rolle *SuperAdmin* Einstellungen ändern dürfen【716868813219956†L69-L79】. - - -## Deployment (Produktion) - - -1. **Server vorbereiten** – Installiere PHP ≥ 8.2, Composer, Node.js und einen Webserver (Apache/Nginx). Konfiguriere den Webserver so, dass das `public`‑Verzeichnis als Root dient und `index.php` als Fallback‑Routenhandler. - - -2. **Umgebungsvariablen setzen** – Setze `APP_ENV=production` und `APP_DEBUG=false`. Passe `APP_URL` an deine Domain an und konfiguriere die Mail‑ und Datenbankvariablen. - - -chatgpt-agent % bash -lc cat /home/oai/share/report.md | sed -n '141,160p' - - -3. **Caches & Optimierung** – Führe vor jedem Release aus: - - -```bash -php artisan config:cache -php artisan route:cache -php artisan view:cache -php artisan optimize -npm run build -``` - - -4. **Jobs & Cron** – Wenn das Projekt Queue‑Jobs nutzt (z. B. Newsletter‑Versand), richte einen Queue‑Worker via Supervisor oder systemd ein und plane den Scheduler (`php artisan schedule:run`) per Cron. - - -## Troubleshooting & Tipps - - -- **Lange Dateinamen unter Windows** – Git kann unter Windows Probleme mit sehr langen Dateipfaden haben (z. B. bei hochgeladenen Bildern). Aktiviere lange Pfade mit `git config --global core.longpaths true`. Benenne Dateien möglichst kurz, wenn beim Commit Fehler wie „Filename too long“ auftreten. -- **Uploads und Rechte** – Achte darauf, dass `storage/` und `bootstrap/cache/` für den Webserver schreibbar sind (Berechtigungen 775 oder 777 je nach Setup). Profilbilder und Logos werden direkt im `public/images`‑Verzeichnis gespeichert【716868813219956†L98-L148】【716868813219956†L169-L178】. -- **Newsletter** – Abonnenten erhalten nur dann eine E‑Mail, wenn ein Post als sichtbar (`visibility = 1`) markiert wird【277929543452449†L347-L349】【277929543452449†L360-L381】. Überprüfe, ob dein Mailserver korrekt konfiguriert ist und Mails versendet werden. -- **SEO** – Passe in den Einstellungen Titel, Meta‑Beschreibung und Keywords an dein Projekt an; sie werden auf der Startseite und den Kategorieseiten verwendet【490713492725882†L23-L47】. Aktualisiere auch die Social‑Links, damit Buttons korrekt funktionieren【587727673959283†L34-L50】. - - - - -chatgpt-agent % bash -lc cat /home/oai/share/report.md | sed -n '161,180p' -## Sicherheitshinweise - - -- **Schütze geheime Schlüssel** – Die `.env`‑Datei sollte nie in das Repository eingecheckt werden; stattdessen umgebungsabhängig auf dem Server hinterlegt werden. API‑Schlüssel und Passwörter dürfen nicht in der Versionskontrolle landen. -- **Updates** – Halte Laravel und die verwendeten Pakete aktuell (`composer update` und `npm update`). Teste Updates in einer Staging‑Umgebung, bevor du sie produktiv einsetzt. -- **Backups** – Lege regelmäßige Datenbank‑ und Dateibackups an, insbesondere für `storage/app/public` und die Datenbank. - - -## Lizenz - - -Die Anwendung basiert auf dem Laravel‑Skeleton und steht unter der **MIT‑Lizenz**【156200196044006†L53-L58】. Weitere Details findest du in der `LICENSE`‑Datei des Projekts. +# Fitnessblog +**Fitnessblog** ist ein Laravel-basiertes Blog-System für Fitness-/Lifestyle-Content mit öffentlichem Frontend und einem Admin-Backend zur Verwaltung von Beiträgen, Kategorien, Slider und Website-Einstellungen. --- +## Überblick -Diese Dokumentation fasst den aktuellen Stand des Projekts zum **7. Januar 2026** zusammen. Bei Änderungen im Repository sollten die genannten Versionsanforderungen und Funktionen aktualisiert werden. Bei offenen Fragen oder Problemen können Issues im Gitea‑Repository erstellt werden. +Das Projekt stellt eine klassische Blog-Struktur bereit: +- **Frontend**: Blog-Startseite, Beiträge nach Kategorien/Tags/Autoren, Suche, Kontaktformular +- **Backend (Admin)**: Login/Passwort-Reset, Dashboard, Beitragsverwaltung, Kategorien, Slider, Settings, Newsletter-Versand -chatgpt-agent % \ No newline at end of file +--- + +## Tech-Stack + +### Backend +- **Framework:** Laravel (Projekt nutzt moderne Laravel-Struktur) +- **Sprache:** PHP (empfohlen **PHP >= 8.2**) +- **Datenbank:** MySQL/MariaDB (alternativ PostgreSQL/SQLite möglich) +- **E-Mail:** Custom SMTP-Konfiguration über `CMAIL_*` (für Kontakt & Newsletter) +- **Queues/Jobs:** Newsletter-Versand erfolgt über Queue-Jobs (falls Worker aktiv) + +### Frontend +- **Build Tool:** Vite +- **CSS:** Tailwind CSS +- **HTTP/AJAX:** Axios + +### Verwendete Pakete (Auszug) +- **SEO:** `artesaos/seotools` (Meta-Tags, OpenGraph, Twitter Cards) +- **Sitemap:** `spatie/laravel-sitemap` (Sitemap-Generierung) +- **Slugs:** `cviebrock/eloquent-sluggable` (sprechende URLs) +- **Bildbearbeitung:** `intervention/image` (Thumbnails/Resizes) +- **Dateimanager:** `barryvdh/laravel-elfinder` (Medienverwaltung) +- **UI:** Livewire (interaktive Komponenten) +- **Mail:** `phpmailer/phpmailer` +- **Image Crop:** `sawastacks/kropify-laravel` (z.B. Profil/Logo-Zuschnitt) + +--- + +## Features + +### Frontend (öffentlich) +- **Startseite** mit SEO-Informationen aus den Einstellungen +- **Kategorien-Ansicht** (Posts nach Kategorie) +- **Autor-Seiten** (Posts nach Autor) +- **Tag-Seiten** (Posts nach Tags) +- **Suche** nach Beiträgen +- **Startseiten-Slider** (Slides aus dem Backend) +- **Sidebar-Widgets** + - Neueste Beiträge + - Kategorien mit Beitragsanzahl + - Tag-Übersicht +- **Lesedauer-Anzeige** (automatisch berechnet) +- **Kontaktformular** (`/contact`) inkl. Mailversand +- **Sitemap** (`/sitemap.xml`) + +### Admin-Backend +- **Login** und **Passwort-Reset** (Token-basiert) +- **Dashboard** mit Kennzahlen (Posts/Tags/Newsletter-Abonnenten) +- **Beitragsverwaltung** + - Erstellen/Bearbeiten/Löschen + - Bild-Upload pro Beitrag + - Automatische Bild-Generierung: + - Thumbnail (z.B. 250×250) + - Resized Preview (z.B. 512×320) + - SEO-Felder (Meta Keywords/Description, strukturierte Daten) + - Sichtbarkeit (Draft/Published) +- **Kategorien & Unterkategorien** +- **Slider-Verwaltung** (Bilder/Reihenfolge/Status) +- **Settings** + - Seitentitel / Meta-Description / Keywords + - Site-E-Mail + - Social Links + - Logo & Favicon Upload +- **Profil** + - Profilbild Upload (ersetzt vorheriges Bild) +- **Newsletter** + - Abonnenten-Verwaltung + - Optionaler Versand an alle Abonnenten beim Veröffentlichen eines Posts + +--- + +## Installation (lokal) + +### Voraussetzungen +- PHP >= 8.2 +- Composer +- Node.js (LTS) + npm +- Datenbank (z.B. MariaDB/MySQL) +- Git + +### Setup +```bash +git clone ssh://git@git.magicpotter.at:2222/Magicpotter/Fitnessblog.git +cd Fitnessblog + +composer install +npm install + +php artisan key:generate +php artisan migrate +php artisan storage:link + +npm run dev +# oder: npm run build