Files
backPRO/docs/PLAN.md
2026-02-15 11:37:27 +01:00

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):

  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)