Martin f7be09ec63 Add Broken Links detection and SEO Analysis features
Database Schema:
- Added meta_description TEXT field to pages table
- Added index on status_code for faster broken link queries

Backend Changes:
- Crawler now extracts meta descriptions from pages
- New API endpoint: broken-links (finds 404s and server errors)
- New API endpoint: seo-analysis (analyzes titles and meta descriptions)

SEO Analysis Features:
- Title length validation (optimal: 30-60 chars)
- Meta description length validation (optimal: 70-160 chars)
- Detection of missing titles/descriptions
- Duplicate content detection (titles and meta descriptions)

Frontend Changes:
- Added "Broken Links" tab showing pages with errors
- Added "SEO Analysis" tab with:
  * Statistics overview
  * Pages with SEO issues
  * Duplicate content report

All quality checks pass:
- PHPStan Level 8: 0 errors
- PHPCS PSR-12: 0 warnings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 09:26:33 +02:00
2025-10-03 14:02:44 +02:00
2025-10-03 23:19:49 +02:00
2025-10-03 14:13:04 +02:00

PHP Docker Anwendung

Eine PHP-Anwendung mit MariaDB, die in Docker läuft.

Anforderungen

  • Docker
  • Docker Compose

Installation & Start

  1. Container starten:
docker-compose up -d
  1. Container stoppen:
docker-compose down
  1. Container neu bauen:
docker-compose up -d --build

Services

Datenbank Zugangsdaten

  • Host: mariadb
  • Datenbank: app_database
  • Benutzer: app_user
  • Passwort: app_password
  • Root Passwort: root_password

Struktur

.
├── docker-compose.yml      # Docker Compose Konfiguration
├── Dockerfile              # PHP Container Image
├── config/                 # Konfigurationsdateien
│   ├── docker/
│   │   ├── init.sql        # Datenbank Initialisierung
│   │   └── start.sh        # Container Start-Script (unused)
│   └── nginx/
│       └── default.conf    # Nginx Konfiguration
├── src/                    # Anwendungscode
│   ├── api.php
│   ├── index.php
│   ├── classes/
│   └── crawler-worker.php
├── tests/                  # Test Suite
│   ├── Unit/
│   └── Integration/
├── phpstan.neon            # PHPStan Konfiguration
└── phpcs.xml               # PHPCS Konfiguration

Entwicklung

Die Anwendungsdateien befinden sich im src/ Verzeichnis und werden als Volume in den Container gemountet, sodass Änderungen sofort sichtbar sind.

Tests & Code-Qualität

Unit Tests ausführen

Die Anwendung verwendet PHPUnit für Unit- und Integrationstests:

# Alle Tests ausführen
docker-compose exec php sh -c "php /var/www/html/vendor/bin/phpunit /var/www/tests/"

# Alternative mit Composer-Script
docker-compose exec php composer test

Die Tests befinden sich in:

  • tests/Unit/ - Unit Tests
  • tests/Integration/ - Integration Tests

Statische Code-Analyse mit PHPStan

PHPStan ist auf Level 8 (höchstes Level) konfiguriert und analysiert den gesamten Code:

# PHPStan ausführen
docker-compose exec php sh -c "php -d memory_limit=512M /var/www/html/vendor/bin/phpstan analyse -c /var/www/phpstan.neon"

# Alternative mit Composer-Script
docker-compose exec php composer phpstan

PHPStan Konfiguration:

  • Level: 8 (strictest)
  • Analysierte Pfade: src/ und tests/
  • Ausgeschlossen: vendor/ Ordner
  • Konfigurationsdatei: phpstan.neon

Code Style Prüfung mit PHP_CodeSniffer

PHP_CodeSniffer (PHPCS) prüft den Code gegen PSR-12 Standards:

# Code Style prüfen
docker-compose exec php composer phpcs

# Code Style automatisch korrigieren
docker-compose exec php composer phpcbf

PHPCS Konfiguration:

  • Standard: PSR-12
  • Analysierte Pfade: src/ und tests/
  • Ausgeschlossen: vendor/ Ordner
  • Auto-Fix verfügbar mit phpcbf
Description
No description provided
Readme 187 KiB
Languages
Hack 52.4%
PHP 46%
Dockerfile 1.5%
Shell 0.1%