# BackPRO - System Zarządzania Zapleczem SEO ## Opis projektu BackPRO to narzędzie webowe (PHP) do automatycznego zarządzania siecią stron WordPress stanowiących zaplecze SEO. System po dodaniu instancji WordPressa i skonfigurowaniu tematów automatycznie generuje i publikuje unikalne artykuły z obrazkami, równomiernie rozkładając tematy. **URL:** https://backpro.projectpro.pl **Hosting:** Hostido (shared hosting) ## Stack technologiczny - **PHP 8.3** - czyste PHP z własną strukturą MVC (bez frameworka) - **MySQL/MariaDB** - baza danych - **WordPress REST API** - komunikacja z instancjami WordPress - **OpenAI API** - generowanie artykułów (konfigurowalny model: GPT-4o, GPT-4o-mini, itp.) - **Freepik API** - generowanie/pobieranie obrazków do artykułów (z fallbackiem na Unsplash/Pexels) - **CRON** - automatyczne uruchamianie publikacji co 1 godzinę - **Bootstrap 5** - frontend panelu administracyjnego - **Composer** - zarządzanie zależnościami (Guzzle HTTP, phpdotenv) ## Struktura katalogów ``` public_html/ ├── index.php # Front controller ├── .htaccess # Rewrite rules + zabezpieczenia katalogów ├── .env # Konfiguracja (zablokowany .htaccess) ├── .env.example # Przykładowa konfiguracja ├── composer.json ├── vendor/ # Composer autoload ├── assets/ │ ├── css/app.css │ └── js/app.js ├── docs/ # Dokumentacja (deny from all) ├── src/ # Kod PHP (deny from all) │ ├── Core/ # Rdzeń MVC │ │ ├── App.php # Bootstrap aplikacji │ │ ├── Router.php # Routing URL → Controller │ │ ├── Controller.php # Bazowy kontroler │ │ ├── Model.php # Bazowy model (PDO wrapper) │ │ ├── Database.php # Singleton połączenia PDO │ │ ├── Auth.php # System autoryzacji │ │ ├── View.php # Renderer szablonów │ │ └── Config.php # Ładowanie .env │ ├── Controllers/ # Kontrolery aplikacji │ │ ├── AuthController.php │ │ ├── DashboardController.php │ │ ├── SiteController.php │ │ ├── TopicController.php │ │ ├── CategoryController.php │ │ ├── ArticleController.php │ │ ├── PublishController.php │ │ └── SettingsController.php │ ├── Models/ # Modele danych │ │ ├── User.php │ │ ├── Site.php │ │ ├── Topic.php │ │ ├── Category.php │ │ ├── Article.php │ │ └── PublishQueue.php │ ├── Services/ # Logika biznesowa │ │ ├── WordPressService.php │ │ ├── OpenAIService.php │ │ ├── ImageService.php │ │ ├── PublisherService.php │ │ └── TopicBalancer.php │ └── Helpers/ │ ├── Validator.php │ └── Logger.php ├── templates/ # Szablony PHP (deny from all) │ ├── layout/ │ ├── auth/ │ ├── dashboard/ │ ├── sites/ │ ├── topics/ │ ├── categories/ │ ├── articles/ │ └── settings/ ├── cron/ # Skrypty CRON (deny from all) │ └── publish.php ├── storage/logs/ # Logi (deny from all) ├── migrations/ # Migracje SQL (deny from all) └── config/ # Konfiguracja routingu (deny from all) └── routes.php ``` ## Główne funkcje ### 1. System logowania - Login/hasło z bcrypt - Sesje PHP - Middleware autoryzacji - Obsługa wielu użytkowników - Zmiana hasła przez zalogowanego użytkownika (`/change-password`) ### 2. Zarządzanie stronami WordPress - Dodawanie/edycja/usuwanie instancji WP - Konfiguracja: URL, dane API (Application Password), interwał publikacji - Oznaczanie jako jedno-/wielotematyczna - Test połączenia z WP REST API ### 3. Biblioteka tematów (`/global-topics`) - Globalna biblioteka tematów z hierarchią 2-poziomową (kategoria → temat) - 14 kategorii nadrzędnych + ~50 subtematów preinstalowanych - Dodawanie własnych kategorii i tematów - Edycja / usuwanie (CASCADE na subtematach) ### 4. Zarządzanie tematami stron (`/sites/{id}/topics`) - Przypisywanie tematów do stron z biblioteki globalnej lub tworzenie własnych - Opis/wytyczne dla AI (co i jak pisać) - Mapowanie na kategorię WordPress - Aktywacja/dezaktywacja ### 4. Automatyczna publikacja (CRON) Algorytm (co 1h): 1. Znajdź stronę, której kolej na publikację (najdłużej bez nowego artykułu + minął interwał) 2. TopicBalancer → wybierz temat z najmniejszą liczbą artykułów 3. OpenAI → wygeneruj artykuł (z listą istniejących tytułów w prompcie) 4. Freepik → wygeneruj obrazek 5. WP REST API → upload obrazka + publikacja posta 6. Zapisz w bazie, zaktualizuj liczniki ### 5. Historia artykułów - Lista wszystkich wygenerowanych artykułów - Podgląd treści - Status (generated/published/failed) - Logi błędów ### 6. Ustawienia - Klucze API (OpenAI, Freepik) - Wybór modelu AI - Konfiguracja globalna ## Plan implementacji | Etap | Zakres | Pliki | |------|--------|-------| | 1. Fundament | Struktura, Core MVC, .htaccess, migracja SQL, logowanie | Core/*, AuthController, migrations/ | | 2. Strony | CRUD WordPress, tematy, kategorie, dashboard | SiteController, TopicController, CategoryController | | 3. API | Integracje OpenAI, Freepik, WordPress REST API | Services/* | | 4. Publikacja | PublisherService, TopicBalancer, CRON, historia | PublisherService, cron/publish.php, ArticleController | | 5. Finalizacja | Ustawienia, logi, dokumentacja, testy | SettingsController, Logger, docs/ | ## Bezpieczeństwo - Wszystkie katalogi poza assets/ zabezpieczone `.htaccess` (Deny from all) - Plik `.env` zablokowany przez .htaccess - Hasła hashowane bcrypt - Prepared statements (PDO) - ochrona przed SQL injection - htmlspecialchars() w szablonach - ochrona przed XSS - CSRF tokeny w formularzach - Application Passwords do WP REST API (nie zwykłe hasła)