Files
backPRO/GEMINI.md

86 lines
4.1 KiB
Markdown

# GEMINI.md - BackPRO (SEO Management System)
## Project Overview
**BackPRO** is a custom PHP-based SEO management system designed to automate the management and content generation for a network of WordPress satellite sites. It leverages the WordPress REST API, OpenAI for content generation, and various image APIs (like Freepik) to create and publish SEO-optimized articles.
### Core Technologies
- **Language:** PHP 8.3+ (Strict Types enabled)
- **Framework:** Custom MVC architecture (no external framework like Laravel/Symfony)
- **Database:** MySQL/MariaDB (via PDO)
- **Frontend:** Bootstrap 5, Vanilla CSS/JS, PHP Templates
- **Integrations:**
- WordPress REST API (via Application Passwords)
- OpenAI API (GPT models for content)
- Freepik/Unsplash/Pexels APIs (for images)
- Semstorm/DataForSeo (for SEO metrics)
- **Dependencies:** Managed via Composer (`guzzlehttp/guzzle`, `phpdotenv`)
---
## Architecture & Structure
The project follows a standard MVC pattern with a clear separation of concerns:
- **`index.php`**: Front Controller - entry point for all web requests.
- **`src/Core/`**: The "engine" of the application.
- `App.php`: Application bootstrapper.
- `Router.php`: Maps URLs to controllers (defined in `config/routes.php`).
- `Model.php`: Base class for database interactions using PDO.
- `Controller.php`: Base class for all controllers.
- `Auth.php`: Session-based authentication system.
- **`src/Controllers/`**: Contains application logic (Auth, Dashboard, Sites, Topics, Articles, etc.).
- **`src/Models/`**: Database entity representations.
- **`src/Services/`**: External API clients and complex business logic (e.g., `WordPressService`, `OpenAIService`, `PublisherService`).
- **`templates/`**: PHP-based view templates.
- **`cron/`**: Scripts designed for CLI execution via system cron jobs (automated publishing).
- **`migrations/`**: SQL files for database schema evolution.
---
## Development Guidelines
### 1. Coding Standards
- **Naming:** Follow PSR-4 for class autoloading (Namespace `App\` maps to `src/`).
- **Database:** Always use Prepared Statements via `src/Core/Database.php` or `src/Core/Model.php` to prevent SQL Injection.
- **Security:**
- Use `htmlspecialchars()` in templates for XSS protection.
- Passwords must be hashed using `bcrypt` (via `password_hash`).
- API keys and sensitive data belong in the `.env` file.
- **Error Handling:** Use `App\Helpers\Logger` for logging application events and errors. Logs are stored in `storage/logs/`.
### 2. Working with Models
Models extend `App\Core\Model` and should contain methods for specific data retrieval. Use `$this->db` (a PDO instance) for queries.
### 3. Adding Routes
New endpoints must be registered in `config/routes.php`. Format: `$router->METHOD('/path', 'ControllerName', 'methodName')`.
### 4. Integration Logic
Place logic for interacting with external services in the `src/Services/` directory. These should be designed as reusable components.
---
## Deployment & Running
### Environment Setup
1. **PHP:** Ensure PHP 8.1+ is installed.
2. **Composer:** Run `composer install` to install dependencies.
3. **Configuration:** Copy `.env.example` to `.env` and fill in:
- Database credentials (`DB_HOST`, `DB_NAME`, `DB_USER`, `DB_PASS`)
- API Keys (`OPENAI_API_KEY`, `FREEPIK_API_KEY`, etc.)
4. **Database:** Execute SQL scripts from the `migrations/` directory in order.
### Commands & Scripts
- **Web Interface:** Accessible via a web server pointing to the root directory (ensure `.htaccess` is respected).
- **Automation (CRON):**
- `php cron/publish.php` - Triggers the automated publishing cycle.
- `php cron/semstorm.php` - Syncs SEO metrics.
---
## Key Features
- **WordPress Site CRUD:** Add and manage WP instances.
- **Topic Balancer:** Ensures content is distributed evenly across assigned topics.
- **AI Content Engine:** Generates unique articles with contextual images.
- **Remote Installer:** Automates the installation of WordPress and themes on remote servers.
- **SEO Analytics:** Tracks visibility and indexing status via third-party services.