name: fusecore
description: FuseCore Modular Architecture - Laravel 12 modular monolith with auto-discovery, React integration, and SOLID principles. Use when creating modules, understanding FuseCore structure, or implementing features in FuseCore projects.
versions:
laravel: "12.46"
php: "8.5"
react: "19"
typescript: "5.8"
user-invocable: true
references: references/architecture.md, references/module-structure.md, references/module-discovery.md, references/module-json.md, references/contracts.md, references/traits.md, references/service-provider.md, references/react-integration.md, references/routes.md, references/migrations.md, references/i18n.md, references/creating-module.md
related-skills: solid-php, laravel-permission, laravel-api
FuseCore Modular Architecture
Agent Workflow (MANDATORY)
Before ANY implementation in FuseCore project, launch in parallel:
- fuse-ai-pilot:explore-codebase - Analyze existing modules in
/FuseCore/
- fuse-ai-pilot:research-expert - Verify Laravel 12 patterns via Context7
- fuse-laravel:laravel-expert - Apply Laravel best practices
After implementation, run fuse-ai-pilot:sniper for validation.
Overview
FuseCore is a Modular Monolith architecture for Laravel 12 with React 19 integration.
| Component | Purpose |
|---|
| Module | Self-contained feature (User, Dashboard, Blog) |
| Auto-Discovery | Automatic registration via module.json |
| Traits | HasModule for resource loading |
| Contracts | ModuleInterface, ReactModuleInterface |
| React Integration | Isolated React per module |
| i18n | Multi-language support (FR/EN/DE/IT/ES) |
Critical Rules
- All code in
/FuseCore/{Module}/ - Never in /app/
- One module.json per module - Required for discovery
- ServiceProvider per module - Use
HasModule trait
- Files < 100 lines - Split at 90 lines (SOLID)
- Interfaces in
/App/Contracts/ - Never in components
- Migrations in module -
/Database/Migrations/
- Routes in module -
/Routes/api.php
Architecture Overview
FuseCore/
├── Core/ # Infrastructure (priority 0)
│ ├── App/
│ │ ├── Contracts/ # ModuleInterface, ReactModuleInterface
│ │ ├── Services/ # ModuleDiscovery, RouteAggregator
│ │ ├── Traits/ # HasModule, HasModuleDatabase
│ │ └── Providers/ # FuseCoreServiceProvider
│ ├── Config/fusecore.php
│ └── module.json
│
├── User/ # Auth module
│ ├── App/Models/ # User.php, Profile.php
│ ├── Config/ # Module config (sanctum.php, etc.)
│ ├── Database/Migrations/
│ ├── Resources/React/ # Isolated React
│ ├── Routes/api.php
│ └── module.json # dependencies: []
│
└── {YourModule}/ # Your new module
├── App/
│ ├── Models/
│ ├── Http/Controllers/
│ ├── Services/
│ └── Providers/{YourModule}ServiceProvider.php
├── Config/ # Module-specific config
├── Database/Migrations/
├── Resources/React/
├── Routes/api.php
└── module.json # dependencies: ["User"]
Reference Guide
Architecture
Implementation
Resources
Guides
Templates (Code Examples)
Quick Reference
Create New Module
# 1. Create directory structure
mkdir -p FuseCore/{ModuleName}/{App/{Models,Http/Controllers,Services,Providers},Database/Migrations,Resources/React,Routes}
# 2. Create module.json
# 3. Create ServiceProvider with HasModule trait
# 4. Create routes/api.php
# 5. Run: php artisan fusecore:cache-clear
module.json
{
"name": "ModuleName",
"version": "1.0.0",
"enabled": true,
"isCore": false,
"dependencies": ["User"]
}
ServiceProvider
class ModuleNameServiceProvider extends ServiceProvider
{
use HasModule;
public function boot(): void
{
$this->loadModuleMigrations();
}
}
Routes
Route::middleware(['api', 'auth:sanctum'])->group(function () {
Route::apiResource('items', ItemController::class);
});
Module Checklist
SOLID Compliance
| Rule | FuseCore Implementation |
|---|
| Single Responsibility | One module = one feature |
| Open/Closed | Extend via ModuleInterface |
| Liskov Substitution | ReactModuleInterface extends ModuleInterface |
| Interface Segregation | Separate contracts |
| Dependency Inversion | Inject via ServiceProvider |
File limits: All files < 100 lines. Split at 90.
Naming Conventions
| Type | Convention | Example |
|---|
| Module folder | PascalCase | BlogPost |
| module.json name | PascalCase | "name": "BlogPost" |
| ServiceProvider | {Module}ServiceProvider | BlogPostServiceProvider |
| Controller | {Resource}Controller | PostController |
| Model | Singular | Post |
| Migration | create_{table}_table | create_posts_table |
| Routes file | api.php | Always api.php |