Module Architecture

Module Architecture

iSPA CMS uses a modular architecture built on nwidart/laravel-modules (v12.0). Each module is an independent package with its own namespace, routes, migrations, and service providers.

Directory Structure

cms/
├── Core/                  # Essential CMS functionalities
├── Content/               # Articles, pages, media
├── Ecommerce/             # Orders, payments
├── Education/             # Academic management
├── Product/               # Product catalog
├── RealEstate/            # Property listings
├── CmsManagement/         # Domain management
├── GuuXeCrawler/          # Web crawling pipeline
├── GameAdmin/             # Game administration
├── GameAuth/              # Game authentication
├── GameCore/              # Core game systems
├── GameEconomy/           # Game economy
├── GameInventory/         # Player inventory
├── GameLeaderboard/       # Leaderboards
├── GameLiveOps/           # Live operations
├── GameMarketplace/       # P2P marketplace
├── GamePlayer/            # Player profiles
└── GameRun/               # Game sessions

Core CMS Modules

Core

The system kernel providing authentication, authorization, file upload, logging, caching, i18n, workflow engine, and the agentic subsystem.

  • Namespace: Cms\Core
  • Alias: core
  • Providers: CoreServiceProvider, EventServiceProvider, RouteServiceProvider, AuthServiceProvider, CMSCacheServiceProvider, CMSLoggerServiceProvider

Content

Manages articles, audio, video, documents, notifications, events, admissions, static pages, and crawled content.

  • Namespace: Cms\Content
  • Dependencies: Core

Ecommerce

Handles orders, carts, payments (Stripe), checkout flow, and order emails.

  • Namespace: Cms\Ecommerce
  • Dependencies: Core, Product

Education

Academic management: academic years, semesters, instructors, subjects, classes, evaluations, scores.

  • Namespace: Cms\Education
  • Dependencies: Core

Product

Product catalog, SKUs, brands, attributes, combos.

  • Namespace: Cms\Product
  • Dependencies: Core

RealEstate

Real estate: projects, properties, investors, utilities.

  • Namespace: Cms\RealEstate
  • Dependencies: Core

CmsManagement

Domain management and CMS-level multi-tenancy.

  • Namespace: Cms\CmsManagement

GuuXeCrawler

Web data crawling pipeline: sources, fetch, orchestrate, cleanup.

  • Namespace: Cms\GuuXeCrawler
  • Dependencies: Core, Product

Game Modules

All game modules use the Cms\Game{Module} namespace and the /v2/game route prefix.

ModuleNamespaceDescription
GameAdminCms\GameAdminGame admin dashboard, ledger drift check
GameAuthCms\GameAuthGame login/registration, auth middleware
GameCoreCms\GameCoreBase classes, shared logic
GameEconomyCms\GameEconomyWallets, currencies, balance reconciliation
GameInventoryCms\GameInventoryPlayer inventory management
GameLeaderboardCms\GameLeaderboardLeaderboards, auto-promotion
GameLiveOpsCms\GameLiveOpsBanners, events, runtime config
GameMarketplaceCms\GameMarketplaceP2P trading marketplace (Phase 9.5)
GamePlayerCms\GamePlayerPlayer profiles and stats
GameRunCms\GameRunGame sessions

Internal Module Structure

cms/{Module}/
├── app/
│   ├── Console/           # Artisan commands
│   ├── Http/
│   │   ├── Controllers/   # API & web controllers
│   │   ├── Requests/      # Form request validation
│   │   └── Resources/     # API resources
│   ├── Models/            # Eloquent models
│   ├── Providers/         # Service providers
│   ├── Repositories/      # Data access layer
│   └── Services/          # Business logic
├── routes/
│   ├── api.php           # API routes
│   └── web.php           # Web routes
├── composer.json          # Module dependencies
└── module.json            # Module metadata

Module Metadata

{
    "name": "Core",
    "alias": "core",
    "description": "Essential CMS functionalities",
    "version": "2026.03.0",
    "providers": ["Cms\\Core\\Providers\\CoreServiceProvider"],
    "files": []
}

Conventions

  • UUID-first: Admin API (v2/admin/*) uses UUIDs for all resources with a uuid column.
  • Route prefix: CMS modules use /v2/admin/, game modules use /v2/game/.
  • Module-scoped commits: Each commit changes only a single module.
  • Synchronized versioning: All module.json and composer.json share the same CalVer version.