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.
| Module | Namespace | Description |
|---|---|---|
| GameAdmin | Cms\GameAdmin | Game admin dashboard, ledger drift check |
| GameAuth | Cms\GameAuth | Game login/registration, auth middleware |
| GameCore | Cms\GameCore | Base classes, shared logic |
| GameEconomy | Cms\GameEconomy | Wallets, currencies, balance reconciliation |
| GameInventory | Cms\GameInventory | Player inventory management |
| GameLeaderboard | Cms\GameLeaderboard | Leaderboards, auto-promotion |
| GameLiveOps | Cms\GameLiveOps | Banners, events, runtime config |
| GameMarketplace | Cms\GameMarketplace | P2P trading marketplace (Phase 9.5) |
| GamePlayer | Cms\GamePlayer | Player profiles and stats |
| GameRun | Cms\GameRun | Game 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.jsonandcomposer.jsonshare the same CalVer version.

