150 lines
6.2 KiB
Markdown
150 lines
6.2 KiB
Markdown
# 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)
|