# 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
