Files
portal-api/PROJECT_STRUCTURE.md
T

12 KiB

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