modulespress / framework
The core powering the modulespress framework.
Requires
- adbario/php-dot-notation: ^3.3
- eftec/bladeone: ^4.13
- php-di/php-di: ^7.0
- symfony/validator: ^6.4
- yzen.dev/plain-to-class: ^3.0
Suggests
- spatie/ignition: Required for exception rendering.
README
ModulesPress is a modern WordPress plugin development framework that brings the power of TypeScript, React, and NestJS-style architecture to WordPress development.
🌟 Overview
ModulesPress supercharges your WordPress plugin development by introducing modern development practices and powerful features that make building complex plugins a breeze.
✨ Key Features
- 📂 PSR-4 Autoloader - All classes are loaded by default
- 🎯 Modern Architecture - NestJS-inspired modular design
- ⚡ Vite Integration - Bundling and hot reloading of assets
- 🎨 Blade Templates - Elegant templating with Laravel's Blade
- 🚀 TypeScript & React - First-class support for modern frontend
- 🛠️ PHP 8+ Attributes - Use decorators for clean, declarative code
- 🎭 Dependency Injection - Powerful IoC container
- 🔌 Plugin Framework - Built specifically for WordPress plugins
- 🔄 Hot Module Replacement - Instant feedback during development
📹 ModulesPress Video Guide
Discover how to get started with ModulesPress. This video walks you through installation, setup, and plugin packaging using the powerful ModulesPress framework and CLI.
🚀 Quick Start
Installation
composer global require modulespress/cli
Note: Make sure the composer global bin directory is in your PATH.
After installation, you can access the CLI using either modulespress
or mp
in your terminal.
Documentation
For comprehensive documentation and guides, visit our Official Documentation.
🎯 Framework Philosophy
ModulesPress is built on these core principles:
- Modern Development: Embrace contemporary development practices
- Developer Experience: Provide excellent tooling and debugging
- Type Safety: Leverage TypeScript and PHP 8+ features
- Performance: Optimize for production environments
- WordPress Integration: Seamless WordPress compatibility
📝 Example Usage
Here's a simple example of a ModulesPress plugin:
/** * Plugin Name: My Awesome Plugin * Description: Built with ModulesPress * Version: 1.0.0 */ use MyPlugin\Modules\RootModule\RootModule; use ModulesPress\Foundation\ModulesPressPlugin; if (!defined('ABSPATH')) exit; final class MyAwesomePlugin extends ModulesPressPlugin { public const NAME = "My ModulesPress Plugin"; public const SLUG = "my-modulespress-plugin"; public function __construct() { parent::__construct( rootModule: RootModule::class, rootDir: __DIR__, rootFile: __FILE__ ); } } (new MyAwesomePlugin())->bootstrap();
🤝 Contributing
We welcome contributions! Please feel free to submit a Pull Request.
📄 License
This project is licensed under the MIT License.
🌐 Community
Join our Discord community for support and discussions.
📚 Documentation
For detailed documentation, please visit our Wiki.
🤝 Support
If you need help or have questions:
- Open an issue
- Join our Discord community
🙏 Acknowledgments
Thanks to all our contributors and the open source community!