6.2 KiB
6.2 KiB
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):
- Znajdź stronę, której kolej na publikację (najdłużej bez nowego artykułu + minął interwał)
- TopicBalancer → wybierz temat z najmniejszą liczbą artykułów
- OpenAI → wygeneruj artykuł (z listą istniejących tytułów w prompcie)
- Freepik → wygeneruj obrazek
- WP REST API → upload obrazka + publikacja posta
- 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
.envzablokowany 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)