241 lines
8.5 KiB
Markdown
241 lines
8.5 KiB
Markdown
# External Integrations
|
|
|
|
**Analysis Date:** 2026-02-04
|
|
|
|
## APIs & External Services
|
|
|
|
**Payment Processing:**
|
|
- Stripe - Payment provider for transactions
|
|
- SDK/Client: `stripe/stripe-php` (integrated via PgStripe plugin)
|
|
- Env vars: `STRIPE_API_KEY`, `STRIPE_SECRET_KEY` (configured in `plugins/golem15/pgstripe/`)
|
|
- Purpose: Card processing, payment authorization, subscription management via PaymentGateway system
|
|
|
|
**AI Services:**
|
|
- OpenAI - LLM and chat completions
|
|
- SDK/Client: `openai-php/client` (integrated via AI plugin)
|
|
- Env vars: `OPENAI_API_KEY`
|
|
- Purpose: AI chat interfaces, prompt management, text generation
|
|
- Location: `plugins/golem15/ai/`
|
|
|
|
- Perplexity - Alternative LLM provider
|
|
- SDK/Client: Native HTTP client integration
|
|
- Env vars: `PERPLEXITY_API_KEY`
|
|
- Purpose: Alternative AI engine for AI plugin
|
|
- Location: `plugins/golem15/ai/`
|
|
|
|
**GitHub Integration:**
|
|
- GitHub API v3 - Repository and content management
|
|
- SDK/Client: GitHub REST API via HTTP client
|
|
- Env vars: `GITHUB_TOKEN` (optional, for private repos)
|
|
- Purpose: Git integration features (repo mirroring, CI/CD hooks)
|
|
- Location: `plugins/golem15/github/`
|
|
|
|
**OAuth/Social Authentication:**
|
|
- Laravel Socialite - OAuth provider framework
|
|
- SDK/Client: `laravel/socialite`
|
|
- Configured via: `config/services.php`
|
|
- Purpose: Social login integration (Google, GitHub, etc.) for User plugin
|
|
- Location: `plugins/golem15/user/`
|
|
|
|
## Data Storage
|
|
|
|
**Databases:**
|
|
- MySQL 5.7+ (default in `.env.example`, `DB_CONNECTION=mysql`)
|
|
- Connection: `DB_HOST=127.0.0.1`, `DB_PORT=3306`, `DB_DATABASE=database`, `DB_USERNAME=root`, `DB_PASSWORD=`
|
|
- Client: Laravel Eloquent ORM (built into Laravel Framework)
|
|
- Config file: `config/database.php`
|
|
|
|
- PostgreSQL 9.5+ (supported alternative)
|
|
- Connection: `DB_CONNECTION=pgsql`
|
|
- Client: Laravel Eloquent ORM
|
|
- Config file: `config/database.php`
|
|
|
|
- SQLite (supported alternative, file-based)
|
|
- Connection: `DB_CONNECTION=sqlite`
|
|
- Default file: `storage/database.sqlite`
|
|
- Client: Laravel Eloquent ORM
|
|
- Config file: `config/database.php`
|
|
|
|
- SQL Server (supported alternative)
|
|
- Connection: `DB_CONNECTION=sqlsrv`
|
|
- Client: Laravel Eloquent ORM
|
|
- Config file: `config/database.php`
|
|
|
|
**File Storage:**
|
|
- AWS S3 (optional)
|
|
- Env vars: `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_DEFAULT_REGION`, `AWS_BUCKET`
|
|
- Client: AWS SDK for PHP
|
|
- Config: `config/filesystems.php`, can use S3 disk for file uploads
|
|
- Purpose: Cloud file storage and CDN delivery
|
|
|
|
- Local filesystem (default)
|
|
- Storage paths: `storage/app/`, `storage/app/public/`
|
|
- Public access via symlink: `public/storage/`
|
|
- Generated via: `php artisan winter:mirror public --relative`
|
|
|
|
**Caching:**
|
|
- File-based cache (default, `CACHE_DRIVER=file`)
|
|
- Location: `storage/framework/cache/`
|
|
|
|
- Redis cache (optional, `CACHE_DRIVER=redis`)
|
|
- Connection: `REDIS_HOST=127.0.0.1`, `REDIS_PORT=6379`, `REDIS_PASSWORD=null`
|
|
- Config: `config/cache.php` and `config/database.php` (redis section)
|
|
- Purpose: Fast in-memory caching, session storage, queue backend
|
|
|
|
- Memcached (optional, `CACHE_DRIVER=memcached`)
|
|
- Connection: `MEMCACHED_HOST=127.0.0.1`, `MEMCACHED_PORT=11211`
|
|
- Config: `config/cache.php`
|
|
|
|
## Authentication & Identity
|
|
|
|
**Auth Provider:**
|
|
- Custom JWT-based API authentication
|
|
- Implementation: PHP Open Source Saver JWT Auth (`php-open-source-saver/jwt-auth`)
|
|
- Config files: `config/jwt.php`, `config/auth.php`
|
|
- Purpose: Stateless API authentication for frontend-backend communication
|
|
- Location: `plugins/golem15/user/`
|
|
- Middleware: `jwt.auth` for protected routes, `jwt.refresh` for token refresh
|
|
|
|
- Backend Admin Auth
|
|
- Implementation: Laravel session-based authentication
|
|
- Throttling: Enabled by default (5 attempts, 15-minute suspension)
|
|
- Config: `config/auth.php` (throttle settings)
|
|
|
|
- OAuth Social Login (optional)
|
|
- Providers: Configurable via Laravel Socialite
|
|
- Integration: User plugin
|
|
|
|
## Monitoring & Observability
|
|
|
|
**Error Tracking:**
|
|
- Not detected in default stack
|
|
- Framework: Laravel uses default error logging to files/channels
|
|
|
|
**Logs:**
|
|
- File-based logging (default)
|
|
- Location: `storage/logs/`
|
|
- Driver: `log` (Laravel default single/daily file rotation)
|
|
- Config: `config/logging.php`
|
|
|
|
- Optional: Syslog, Papertrail, or other channels via `config/logging.php`
|
|
|
|
**Debug Mode:**
|
|
- Enabled via `APP_DEBUG=true` in `.env`
|
|
- Winter CMS debugbar available via `debugbar` plugin (`plugins/winter/debugbar/`)
|
|
- WARNING: Always disable `APP_DEBUG=false` in production
|
|
|
|
## CI/CD & Deployment
|
|
|
|
**Hosting:**
|
|
- Not locked to specific platform
|
|
- Requirements: PHP 8.1+ environment with Composer
|
|
- Supports: Traditional VPS, managed hosting, containerized deployment
|
|
|
|
**CI Pipeline:**
|
|
- Not detected in default stack
|
|
- Test execution: `composer test` or `php artisan winter:test`
|
|
- Linting: `composer lint` (parallel-lint for syntax)
|
|
- Code sniffing: `composer sniff` (PHPCS for PSR standards)
|
|
|
|
**Scheduled Tasks:**
|
|
- Laravel Scheduler via cron job (requires cron setup)
|
|
- Cron entry: `* * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1`
|
|
- Scheduled commands (PaymentGateway plugin):
|
|
- `pg:cancel-sent-payments` - Daily
|
|
- `pg:cancel-created-payments` - Daily
|
|
- `pg:cancel-placed-orders` - Daily
|
|
- `pg:finish-orders` - Daily
|
|
- `pg:update-currencies` - Every 10 minutes
|
|
- User plugin scheduled tasks:
|
|
- `user:process-scheduled-deletions` - GDPR scheduled user deletion processing
|
|
|
|
## Environment Configuration
|
|
|
|
**Required env vars:**
|
|
- `APP_NAME` - Application display name
|
|
- `APP_KEY` - Laravel encryption key (generate via `php artisan winter:env`)
|
|
- `APP_DEBUG` - Debug mode (true for dev, false for production)
|
|
- `APP_URL` - Application URL for URL generation
|
|
- `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD` - Database connection
|
|
- `CACHE_DRIVER` - Cache backend (file, redis, memcached)
|
|
- `SESSION_DRIVER` - Session storage (file, redis, database)
|
|
- `QUEUE_CONNECTION` - Queue backend (sync, redis, database, beanstalkd)
|
|
- `MAIL_MAILER` - Mail driver (log, smtp, mailgun, postmark, ses, sendmail)
|
|
|
|
**Secrets location:**
|
|
- `.env` file in project root (generated from `.env.example`)
|
|
- Not committed to git (listed in `.gitignore`)
|
|
- AWS credentials: `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`
|
|
- Mail credentials: `MAIL_USERNAME`, `MAIL_PASSWORD`
|
|
- Third-party API keys: `STRIPE_API_KEY`, `OPENAI_API_KEY`, `PERPLEXITY_API_KEY`, `GITHUB_TOKEN`
|
|
- Redis password: `REDIS_PASSWORD`
|
|
|
|
## Webhooks & Callbacks
|
|
|
|
**Incoming:**
|
|
- Payment webhooks from Stripe (handled by PgStripe plugin)
|
|
- Endpoint: Stripe event signature verification via Stripe SDK
|
|
- Events: payment.success, payment.failed, charge.refunded, subscription events
|
|
- Handler: `plugins/golem15/pgstripe/` webhook listeners
|
|
|
|
- GitHub webhooks (optional, via GitHub plugin)
|
|
- Configurable push/pull request/issue event handlers
|
|
- Handler: `plugins/golem15/github/`
|
|
|
|
**Outgoing:**
|
|
- Email notifications via configured mailer
|
|
- User registration confirmation
|
|
- Payment/order state change notifications (PaymentGateway plugin)
|
|
- Newsletter/notification system via Mail plugin
|
|
- Env vars: `MAIL_FROM_ADDRESS`, `MAIL_FROM_NAME`
|
|
|
|
- Queue workers for async email
|
|
- Driver: `QUEUE_CONNECTION` (default: sync for dev, database/redis for production)
|
|
- Jobs table: `jobs` migration creates queue job storage
|
|
|
|
## Message Queue System
|
|
|
|
**Queue Backend:**
|
|
- Sync driver (default, development) - Processes jobs immediately in request lifecycle
|
|
- `QUEUE_CONNECTION=sync`
|
|
|
|
- Database driver (production-ready) - Stores jobs in `jobs` table
|
|
- `QUEUE_CONNECTION=database`
|
|
- Table: `jobs`
|
|
- Requires: `php artisan queue:work` background worker
|
|
|
|
- Redis driver (optimal for high throughput)
|
|
- `QUEUE_CONNECTION=redis`
|
|
- Connection: Uses REDIS config from `config/database.php`
|
|
|
|
- Beanstalkd driver (alternative)
|
|
- `QUEUE_CONNECTION=beanstalkd`
|
|
- Host: `localhost`, configurable via queue.php
|
|
|
|
## Session Management
|
|
|
|
**Driver:**
|
|
- File-based (default, `SESSION_DRIVER=file`)
|
|
- Location: `storage/framework/sessions/`
|
|
|
|
- Redis (optional, `SESSION_DRIVER=redis`)
|
|
- Connection: Uses REDIS config
|
|
|
|
- Database (optional, `SESSION_DRIVER=database`)
|
|
- Table: `sessions`
|
|
|
|
- Cookie (alternative, `SESSION_DRIVER=cookie`)
|
|
|
|
## Real-Time Communication
|
|
|
|
**WebSockets (via WebSockets plugin):**
|
|
- Framework: Pusher-compatible WebSocket support
|
|
- Plugin: `plugins/golem15/websockets/`
|
|
- Purpose: Real-time chat, notifications, live updates
|
|
- Config: Managed by WebSockets plugin
|
|
- Test command: `php artisan websockets:test-push`
|
|
|
|
---
|
|
|
|
*Integration audit: 2026-02-04*
|