# 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 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 --- ## 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