# Project Structure - Laravel Portal ## 📊 Project Overview | Metric | Count | |--------|-------| | **Models** | 61 | | **Controllers** | 46 | | **Migrations** | 90 | | **Views** | 311 | | **Repositories** | 153 | | **Routes** | 7 | --- ## 🗂️ Directory Structure ``` portal/ ├── app/ │ ├── Console/ # Artisan commands │ │ ├── Commands/ │ │ └── Kernel.php │ │ │ ├── Enums/ # Enum classes │ │ ├── Order/ │ │ ├── Product/ │ │ ├── Client/ │ │ └── Invoice/ │ │ │ ├── Events/ # Event classes │ │ │ ├── Exceptions/ # Exception handlers │ │ │ ├── Exports/ # Excel exports │ │ │ ├── Helpers/ # Helper functions │ │ │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── admin/ # Admin controllers │ │ │ │ ├── ModulevCenterController.php │ │ │ │ ├── ModuleHostingController.php │ │ │ │ ├── CustomerController.php │ │ │ │ ├── OrderController.php │ │ │ │ ├── InvoiceController.php │ │ │ │ ├── UserController.php │ │ │ │ ├── AddonController.php │ │ │ │ ├── TemplateController.php │ │ │ │ ├── SupportController.php │ │ │ │ ├── package/ # Package modules │ │ │ │ │ ├── Datacenter.php │ │ │ │ │ ├── Host.php │ │ │ │ │ ├── Datastore.php │ │ │ │ │ ├── Network.php │ │ │ │ │ ├── Folder.php │ │ │ │ │ ├── Group.php │ │ │ │ │ ├── IPMapping.php │ │ │ │ │ ├── OsVersion.php │ │ │ │ │ └── vm/ │ │ │ │ │ └── VirtualMachineController.php │ │ │ │ ├── product/ │ │ │ │ ├── vm/ │ │ │ │ └── Api/ # API controllers │ │ │ └── rest/ │ │ ├── Middleware/ # Custom middleware │ │ ├── Requests/ # Form requests │ │ ├── Services/ # Services │ │ │ ├── vCenter/ │ │ │ │ ├── Client.php │ │ │ │ ├── PowerShellService.php │ │ │ │ ├── SnapshotService.php │ │ │ │ ├── VirtualMachineService.php │ │ │ │ └── ... │ │ │ ├── Upload.php │ │ │ └── ... │ │ ├── Kernel.php │ │ └── ... │ │ │ ├── Imports/ # Excel imports │ │ │ ├── Jobs/ # Queue jobs │ │ ├── Hosting/ │ │ ├── Mail/ │ │ ├── Payment/ │ │ ├── Ticket/ │ │ └── VirtualMachine/ │ │ └── Sync/ │ │ ├── SyncDatacenter.php │ │ ├── SyncHost.php │ │ ├── SyncDatastore.php │ │ ├── SyncNetwork.php │ │ ├── SyncFolder.php │ │ └── SyncAllPackage.php │ │ │ ├── Mail/ # Mails │ │ └── Customer/ │ │ │ ├── Models/ # Eloquent models (61 files) │ │ ├── User.php │ │ ├── Customer.php │ │ ├── Staff.php │ │ ├── Order.php │ │ ├── Invoice.php │ │ ├── Product.php │ │ ├── Hosting.php │ │ ├── vCenter.php │ │ ├── ModuleDatacenter.php │ │ ├── ModuleHost.php │ │ ├── ModuleDatastore.php │ │ ├── ModuleNetwork.php │ │ ├── ModuleFolder.php │ │ ├── VirtualMachines.php │ │ └── ... │ │ │ ├── Notifications/ │ │ │ ├── Observers/ # Model observers │ │ │ ├── Providers/ # Service providers │ │ ├── AppServiceProvider.php │ │ ├── AuthServiceProvider.php │ │ ├── RouteServiceProvider.php │ │ └── ... │ │ │ ├── Repositories/ # Repository pattern (153 files) │ │ ├── vCenter/ │ │ │ ├── vCenterRepository.php │ │ │ ├── vCenterCachedRepository.php │ │ │ └── vCenterRepositoryInterface.php │ │ ├── Module/ │ │ │ ├── Datacenter/ │ │ │ ├── Host/ │ │ │ ├── Datastore/ │ │ │ ├── Network/ │ │ │ ├── Folder/ │ │ │ ├── IpAddress/ │ │ │ ├── VirtualMachine/ │ │ │ ├── Hosting/ │ │ │ ├── HostingServer/ │ │ │ ├── DnsServer/ │ │ │ ├── Domain/ │ │ │ ├── IPPool/ │ │ │ └── Snapshot/ │ │ ├── User/ │ │ ├── Order/ │ │ ├── Invoice/ │ │ ├── Product/ │ │ ├── Admin/ │ │ └── ... │ │ │ ├── Services/ │ │ │ ├── Support/ │ │ │ ├── Traits/ │ │ │ └── View/ │ └── Components/ # Blade components │ └── Module/ │ ├── bootstrap/ │ ├── app.php │ ├── cache/ │ └── providers.php │ ├── config/ # Configuration files (33 dirs) │ ├── app.php │ ├── auth.php │ ├── cache.php │ ├── database.php │ ├── filesystems.php │ ├── logging.php │ ├── mail.php │ ├── queue.php │ ├── session.php │ ├── queue.php │ └── ... │ ├── database/ │ ├── factories/ │ ├── migrations/ # 90 migration files │ │ ├── 2024_01_31_165959_module_hosting_server.php │ │ ├── 2024_02_01_080844_module_hosting.php │ │ ├── 2024_02_01_082942_v_center.php │ │ ├── 2024_02_01_090134_module_datacenter.php │ │ ├── 2024_02_01_090537_module_host.php │ │ ├── 2024_02_01_091327_module_folder.php │ │ ├── 2024_02_01_091707_module_datastore.php │ │ ├── 2024_02_01_092104_module_network.php │ │ └── ... │ └── seeders/ │ ├── docs/ │ ├── lang/ # Language files │ ├── en/ │ └── vi/ │ ├── public/ # Public assets │ ├── assets/ │ ├── css/ │ ├── js/ │ ├── images/ │ ├── build/ │ ├── libraries/ │ └── index.php │ ├── resources/ │ ├── views/ │ │ ├── administrator/ # Admin views │ │ │ ├── layout/ │ │ │ ├── pages/ │ │ │ │ ├── module/ # Module pages │ │ │ │ │ ├── vcenter/ │ │ │ │ │ ├── hosting/ │ │ │ │ │ └── ippool/ │ │ │ │ ├── package/ # Package pages │ │ │ │ │ ├── vcenter/ │ │ │ │ │ ├── datacenter/ │ │ │ │ │ ├── host/ │ │ │ │ │ ├── datastore/ │ │ │ │ │ ├── network/ │ │ │ │ │ ├── folder/ │ │ │ │ │ ├── vm/ │ │ │ │ │ ├── group/ │ │ │ │ │ ├── ipaddress/ │ │ │ │ │ └── version/ │ │ │ │ ├── customer/ │ │ │ │ ├── order/ │ │ │ │ ├── invoice/ │ │ │ │ ├── product/ │ │ │ │ └── ... │ │ │ └── blocks/ │ │ ├── components/ # Blade components │ │ ├── livewire/ # Livewire components │ │ ├── emails/ # Email templates │ │ ├── form/ │ │ ├── vendor/ │ │ └── errors/ │ ├── js/ │ ├── css/ │ └── sass/ │ ├── routes/ │ ├── admin.php # Admin routes (30,829 bytes) │ ├── api.php # API routes │ ├── web.php # Web routes │ ├── client.php # Client routes │ ├── administrator.php │ ├── channels.php │ └── console.php │ ├── scripts/ │ ├── storage/ │ ├── app/ │ ├── framework/ │ │ ├── cache/ │ │ ├── sessions/ │ │ └── views/ │ └── logs/ │ ├── tests/ │ ├── Feature/ │ ├── Unit/ │ └── ... │ ├── vendor/ # Composer dependencies │ ├── .env # Environment config ├── .env.example ├── artisan ├── composer.json ├── package.json ├── vite.config.js ├── webpack.mix.js ├── docker-compose.yml └── INFRASTRUCTURE_ACTION_ITEMS.md ``` --- ## 🏗️ Architecture Overview ### Pattern: Repository Pattern ``` Controller → Repository Interface → Repository → Model ``` ### Key Modules | Module | Purpose | Key Files | |--------|---------|-----------| | **vCenter Management** | Connect & manage vCenter servers | vCenter.php, ModulevCenterController | | **Infrastructure** | Datacenter, Host, Datastore, Network, Folder | Module* models, package/* controllers | | **Virtual Machines** | VM lifecycle management | VirtualMachines.php, Sync* jobs | | **Orders & Billing** | Order processing, Invoices | Order.php, Invoice.php | | **Customer Management** | Customer accounts, Auth | Customer.php, CustomerController | | **Hosting** | Hosting services | ModuleHosting.php, Hosting.php | --- ## 🎨 Tech Stack - **Backend**: Laravel 10.x - **Frontend**: Bootstrap 5, jQuery AJAX, Livewire - **Database**: MySQL - **Cache**: Redis - **Queue**: Database/Broadcast (laravel-echo-server) - **Auth**: Session-based + Sanctum for API --- ## 📁 Key Configuration Files | File | Purpose | |------|---------| | `config/app.php` | App name, locale, timezone | | `config/database.php` | MySQL connection | | `config/cache.php` | Redis cache config | | `config/queue.php` | Queue connection | | `config/sanctum.php` | API auth | | `routes/admin.php` | All admin routes (~30KB) | --- ## 🔗 Route Structure (routes/admin.php ~575 lines) ``` /admin ├── /vcenter → ModulevCenterController ├── /module │ ├── /dns → ModuleDNSController │ ├── /hosting → ModuleHostingController │ └── /ippool → ModuleIPPoolController ├── /package │ ├── /datacenter → DatacenterController │ ├── /host → HostController │ ├── /datastore → DatastoreController │ ├── /network → NetworkController │ ├── /folder → FolderController │ ├── /vm → VirtualMachineController │ └── ... ├── /customer → CustomerController ├── /order → OrderController ├── /invoice → InvoiceController └── ... ``` --- *Generated: Mar 2026*