5.1 KiB
5.1 KiB
Technology Stack
Analysis Date: 2026-02-04
Languages
Primary:
- PHP 8.1+ - Core application language for WinterCMS framework, all plugins, and controllers
Secondary:
- Twig - Template engine for frontend themes and email templates
- JavaScript - Frontend interactions and AJAX handlers
Runtime
Environment:
- PHP 8.1 or higher (required)
- Laravel 9.x runtime via Winter Storm abstraction layer
Package Manager:
- Composer 2.x - PHP dependency management
- Lockfile: Present (composer.lock managed by Composer merge plugin)
Frameworks
Core:
- Winter CMS 1.2.x - Complete CMS/CMF platform based on Laravel 9
- Laravel Framework 9.1+ - HTTP framework and application foundation
- Winter Storm (~1.2.0) - Winter's buffer layer between Laravel and Winter plugins
Key Modules (Winter Core):
winter/wn-system-module- Core system functionality, models, migrationswinter/wn-backend-module- Admin interface, backend forms, list viewswinter/wn-cms-module- Frontend CMS page management and publishing
Testing:
- PHPUnit 9.5.8+ - Unit and functional testing
- Mockery 1.4.4+ - Mock object framework
- FakerPHP 1.9.2+ - Test data generation
Build/Dev:
- Laravel Artisan - CLI framework for commands and migrations
- Wikimedia Composer Merge Plugin 2.1.0 - Automatic plugin composer.json merging
Key Dependencies
Critical:
winter/storm- Storm library providing DI container, filesystem abstraction, validation frameworklaravel/framework- HTTP kernel, routing, middleware, database ORM (Eloquent), queue systemphp-open-source-saver/jwt-auth- JWT token generation and validation for API authenticationkeios/moneyright- Financial calculations with precise decimal arithmetic (no floats)keios/apparatus- Scenario-based workflow engine, DI container enhancements, backend utilitieskeios/laravel-apparatus- Laravel integration for Apparatus framework
Infrastructure:
wikimedia/composer-merge-plugin- Enables modular plugin architecture with separate composer.json per plugin
Code Quality:
squizlabs/php_codesniffer- PSR-1/PSR-2/PSR-4 code standard checkingphp-parallel-lint/php-parallel-lint- Syntax checkingdms/phpunit-arraysubset-asserts- Extended assertions for arrays in tests
Configuration
Environment:
.env.exampletemplate in project root- Environment variables control all external service integration and deployment settings
- Runtime configuration values:
APP_NAME,APP_KEY,APP_DEBUG,APP_URL- Application settingsDB_CONNECTION,DB_HOST,DB_PORT,DB_DATABASE,DB_USERNAME,DB_PASSWORD- DatabaseCACHE_DRIVER,SESSION_DRIVER,QUEUE_CONNECTION- Cache/session/queue backendsREDIS_HOST,REDIS_PASSWORD,REDIS_PORT- Redis connection (optional)MAIL_MAILER,MAIL_HOST,MAIL_PORT,MAIL_USERNAME,MAIL_PASSWORD- Mail configurationAWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_DEFAULT_REGION,AWS_BUCKET- AWS S3 (optional)
Build:
composer.json- Project dependencies and scriptsphpunit.xml- PHPUnit testing configurationphpcs.xml- PHP CodeSniffer configuration.editorconfig- Editor formatting standards (PSR-compliant)artisan- Artisan CLI entry point scriptindex.php- HTTP request entry point
Laravel Config Files (in config/):
app.php- Application name, debug mode, timezonedatabase.php- Database connections (MySQL, PostgreSQL, SQLite, SQL Server, Redis)cache.php- Cache stores (file, Redis, Memcached, DynamoDB)queue.php- Queue backends (sync, database, beanstalkd, SQS, Redis)mail.php- Mail drivers (SMTP, Mailgun, Postmark, SES, Sendmail, Log)auth.php- Authentication throttling configurationsession.php- Session configurationfilesystems.php- Storage disk configurationservices.php- Third-party service credentials (Mailgun, Postmark, AWS SES)database.php- Multiple database connection types
Plugin-Specific Config:
- JWT configuration publishes to
config/jwt.phpandconfig/auth.php(User plugin) - Each plugin manages its own configuration in
plugins/golem15/*/config/
Platform Requirements
Development:
- PHP 8.1+ installed and available in PATH (use
php-legacycommand per project CLAUDE.md) - Composer 2.x
- MySQL 5.7+ OR PostgreSQL 9.5+ OR SQLite OR SQL Server (at least one required)
- Optional: Redis 5+ (for caching, sessions, queues)
- Optional: Memcached (for caching)
Production:
- PHP 8.1+ with common extensions (PDO, OpenSSL, Fileinfo, Tokenizer, MBSTRING)
- MySQL 5.7+ OR PostgreSQL 9.5+ OR SQL Server database
- Redis (recommended for performance)
- Web server: Apache with mod_rewrite OR Nginx
- Cron job setup for Laravel scheduler (see CLAUDE.md)
Optional Services:
- AWS S3 (for file storage, requires AWS SDK)
- Stripe (payment processing, requires stripe-php SDK)
- OpenAI API (AI integration, requires OpenAI PHP SDK)
- Perplexity API (AI integration alternative)
- Mailgun/Postmark/AWS SES (transactional email)
- GitHub API (Git integration via GitHub plugin)
Stack analysis: 2026-02-04