108 lines
3.2 KiB
Markdown
108 lines
3.2 KiB
Markdown
# 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
|