fusecore

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

FuseCore Modular Architecture

FuseCore模块化架构

Agent Workflow (MANDATORY)

Agent工作流程(强制要求)

Before ANY implementation in FuseCore project, use
TeamCreate
to spawn 3 agents:
  1. fuse-ai-pilot:explore-codebase - Analyze existing modules in
    /FuseCore/
  2. fuse-ai-pilot:research-expert - Verify Laravel 12 patterns via Context7
  3. fuse-laravel:laravel-expert - Apply Laravel best practices
After implementation, run fuse-ai-pilot:sniper for validation.

在FuseCore项目中进行任何开发之前,使用
TeamCreate
生成3个Agent:
  1. fuse-ai-pilot:explore-codebase - 分析
    /FuseCore/
    中的现有模块
  2. fuse-ai-pilot:research-expert - 通过Context7验证Laravel 12模式
  3. fuse-laravel:laravel-expert - 应用Laravel最佳实践
开发完成后,运行fuse-ai-pilot:sniper进行验证。

Overview

概述

FuseCore is a Modular Monolith architecture for Laravel 12 with React 19 integration.
ComponentPurpose
ModuleSelf-contained feature (User, Dashboard, Blog)
Auto-DiscoveryAutomatic registration via
module.json
Traits
HasModule
for resource loading
Contracts
ModuleInterface
,
ReactModuleInterface
React IntegrationIsolated React per module
i18nMulti-language support (FR/EN/DE/IT/ES)

FuseCore是一款针对Laravel 12的模块化单体架构,集成了React 19。
组件用途
Module独立封装的功能模块(如用户、仪表盘、博客)
Auto-Discovery通过
module.json
自动注册模块
Traits
HasModule
用于资源加载
Contracts
ModuleInterface
ReactModuleInterface
React集成为每个模块提供独立的React环境
i18n多语言支持(法语/英语/德语/意大利语/西班牙语)

Critical Rules

核心规则

  1. All code in
    /FuseCore/{Module}/
    - Never in
    /app/
  2. One module.json per module - Required for discovery
  3. ServiceProvider per module - Use
    HasModule
    trait
  4. Files < 100 lines - Split at 90 lines (SOLID)
  5. Interfaces in
    /App/Contracts/
    - Never in components
  6. Migrations in module -
    /Database/Migrations/
  7. Routes in module -
    /Routes/api.php

  1. 所有代码必须放在
    /FuseCore/{Module}/
    目录下
    - 严禁存放在
    /app/
  2. 每个模块必须包含一个
    module.json
    文件
    - 是模块自动发现的必要条件
  3. 每个模块对应一个ServiceProvider - 使用
    HasModule
    trait
  4. 单个文件代码行数不超过100行 - 建议在90行时拆分(遵循SOLID原则)
  5. Interfaces必须放在
    /App/Contracts/
    目录下
    - 严禁放在组件内部
  6. 数据库迁移文件放在模块目录内 - 路径为
    /Database/Migrations/
  7. 路由定义在模块目录内 - 路径为
    /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"]

FuseCore/
├── Core/                    # 基础设施(优先级0)
│   ├── App/
│   │   ├── Contracts/       # ModuleInterface, ReactModuleInterface
│   │   ├── Services/        # ModuleDiscovery, RouteAggregator
│   │   ├── Traits/          # HasModule, HasModuleDatabase
│   │   └── Providers/       # FuseCoreServiceProvider
│   ├── Config/fusecore.php
│   └── module.json
├── User/                    # 认证模块
│   ├── App/Models/          # User.php, Profile.php
│   ├── Config/              # 模块配置文件(如sanctum.php等)
│   ├── Database/Migrations/
│   ├── Resources/React/     # 独立的React环境
│   ├── Routes/api.php
│   └── module.json          # dependencies: []
└── {YourModule}/            # 你的新模块
    ├── App/
    │   ├── Models/
    │   ├── Http/Controllers/
    │   ├── Services/
    │   └── Providers/{YourModule}ServiceProvider.php
    ├── Config/              # 模块专属配置
    ├── Database/Migrations/
    ├── Resources/React/
    ├── Routes/api.php
    └── module.json          # dependencies: ["User"]

Reference Guide

参考指南

Architecture

架构

TopicReferenceWhen to consult
Overviewarchitecture.mdUnderstanding FuseCore design
Module Structuremodule-structure.mdDirectory organization
Auto-Discoverymodule-discovery.mdHow modules are loaded
module.jsonmodule-json.mdModule configuration
主题参考文档适用场景
概述architecture.md理解FuseCore设计理念
模块结构module-structure.md目录组织规范
自动发现module-discovery.md模块加载机制说明
module.jsonmodule-json.md模块配置说明

Implementation

开发实现

TopicReferenceWhen to consult
Contractscontracts.mdModuleInterface, ReactModuleInterface
Traitstraits.mdHasModule, HasModuleDatabase
ServiceProviderservice-provider.mdModule registration
Routesroutes.mdAPI routing
主题参考文档适用场景
Contractscontracts.mdModuleInterface、ReactModuleInterface说明
Traitstraits.mdHasModule、HasModuleDatabase说明
ServiceProviderservice-provider.md模块注册说明
路由routes.mdAPI路由配置

Resources

资源

TopicReferenceWhen to consult
React Integrationreact-integration.mdFrontend per module
Migrationsmigrations.mdDatabase per module
i18ni18n.mdMulti-language setup
主题参考文档适用场景
React集成react-integration.md模块前端React开发
数据库迁移migrations.md模块数据库迁移配置
i18ni18n.md多语言设置

Guides

实操指南

TopicReferenceWhen to consult
Creating Modulecreating-module.mdStep-by-step guide

主题参考文档适用场景
创建新模块creating-module.md分步创建模块指南

Templates (Code Examples)

模板(代码示例)

TemplatePurpose
module.json.mdModule configuration
ServiceProvider.php.mdModule service provider
Controller.php.mdAPI controller
Model.php.mdEloquent model
Migration.php.mdDatabase migration
ReactStructure.mdReact module structure
ApiRoutes.php.mdAPI routes file
Resource.php.mdAPI Resource
Request.php.mdForm Request
Service.php.mdBusiness logic service

模板用途
module.json.md模块配置文件模板
ServiceProvider.php.md模块服务提供者模板
Controller.php.mdAPI控制器模板
Model.php.mdEloquent模型模板
Migration.php.md数据库迁移文件模板
ReactStructure.mdReact模块结构模板
ApiRoutes.php.mdAPI路由文件模板
Resource.php.mdAPI资源模板
Request.php.md表单请求模板
Service.php.md业务逻辑服务模板

Quick Reference

快速参考

Create New Module

创建新模块

bash
undefined
bash
undefined

1. Create directory structure

1. 创建目录结构

mkdir -p FuseCore/{ModuleName}/{App/{Models,Http/Controllers,Services,Providers},Database/Migrations,Resources/React,Routes}
mkdir -p FuseCore/{ModuleName}/{App/{Models,Http/Controllers,Services,Providers},Database/Migrations,Resources/React,Routes}

2. Create module.json

2. 创建module.json文件

3. Create ServiceProvider with HasModule trait

3. 创建带有HasModule trait的ServiceProvider

4. Create routes/api.php

4. 创建routes/api.php文件

5. Run: php artisan fusecore:cache-clear

5. 运行:php artisan fusecore:cache-clear

undefined
undefined

module.json

module.json示例

json
{
    "name": "ModuleName",
    "version": "1.0.0",
    "enabled": true,
    "isCore": false,
    "dependencies": ["User"]
}
json
{
    "name": "ModuleName",
    "version": "1.0.0",
    "enabled": true,
    "isCore": false,
    "dependencies": ["User"]
}

ServiceProvider

ServiceProvider示例

php
class ModuleNameServiceProvider extends ServiceProvider
{
    use HasModule;

    public function boot(): void
    {
        $this->loadModuleMigrations();
    }
}
php
class ModuleNameServiceProvider extends ServiceProvider
{
    use HasModule;

    public function boot(): void
    {
        $this->loadModuleMigrations();
    }
}

Routes

路由示例

php
Route::middleware(['api', 'auth:sanctum'])->group(function () {
    Route::apiResource('items', ItemController::class);
});

php
Route::middleware(['api', 'auth:sanctum'])->group(function () {
    Route::apiResource('items', ItemController::class);
});

Module Checklist

模块检查清单

  • /FuseCore/{Module}/
    directory created
  • module.json
    with name, version, dependencies
  • {Module}ServiceProvider.php
    with
    HasModule
    trait
  • Routes in
    /Routes/api.php
  • Migrations in
    /Database/Migrations/
  • Models in
    /App/Models/
  • Controllers in
    /App/Http/Controllers/
  • React in
    /Resources/React/
    (if needed)
  • i18n in
    /Resources/React/i18n/locales/

  • 已创建
    /FuseCore/{Module}/
    目录
  • 已创建包含名称、版本、依赖的
    module.json
    文件
  • 已创建带有
    HasModule
    trait的
    {Module}ServiceProvider.php
    文件
  • 已在
    /Routes/api.php
    中定义路由
  • 已在
    /Database/Migrations/
    中放置迁移文件
  • 已在
    /App/Models/
    中放置模型文件
  • 已在
    /App/Http/Controllers/
    中放置控制器文件
  • 已在
    /Resources/React/
    中配置React(如有需要)
  • 已在
    /Resources/React/i18n/locales/
    中配置多语言

SOLID Compliance

SOLID原则合规性

RuleFuseCore Implementation
Single ResponsibilityOne module = one feature
Open/ClosedExtend via
ModuleInterface
Liskov Substitution
ReactModuleInterface extends ModuleInterface
Interface SegregationSeparate contracts
Dependency InversionInject via ServiceProvider
File limits: All files < 100 lines. Split at 90.

原则FuseCore实现方式
单一职责原则一个模块对应一个功能
开闭原则通过
ModuleInterface
实现扩展
里氏替换原则
ReactModuleInterface
继承自
ModuleInterface
接口隔离原则使用独立的契约接口
依赖倒置原则通过ServiceProvider实现依赖注入
文件行数限制:所有文件代码行数不超过100行,建议在90行时拆分。

Naming Conventions

命名规范

TypeConventionExample
Module folderPascalCase
BlogPost
module.json namePascalCase
"name": "BlogPost"
ServiceProvider
{Module}ServiceProvider
BlogPostServiceProvider
Controller
{Resource}Controller
PostController
ModelSingular
Post
Migration
create_{table}_table
create_posts_table
Routes file
api.php
Always
api.php
类型规范示例
模块目录大驼峰命名(PascalCase)
BlogPost
module.json中的name字段大驼峰命名(PascalCase)
"name": "BlogPost"
ServiceProvider
{Module}ServiceProvider
BlogPostServiceProvider
控制器
{Resource}Controller
PostController
模型单数形式
Post
迁移文件
create_{table}_table
create_posts_table
路由文件固定为
api.php
始终使用
api.php