Struktur direktori NexaUI dirancang untuk memberikan organisasi yang jelas dan pemisahan tanggung jawab sesuai dengan prinsip-prinsip arsitektur modern. Memahami struktur ini sangat penting untuk dapat bekerja secara efektif dengan framework.
Berikut adalah struktur direktori utama dari aplikasi NexaUI standar:
project-root/
├── assets/ # File statis (CSS, JS, gambar)
├── controllers/ # Controller aplikasi
├── models/ # Model dan repository
├── routes/ # Definisi route
├── system/ # Core framework
├── templates/ # View templates
├── vendor/ # Dependensi Composer
├── .env # Konfigurasi lingkungan
├── .env.example # Template konfigurasi
├── composer.json # Definisi dependensi
└── index.php # Entry point aplikasi
Direktori ini berisi semua file statis yang digunakan oleh aplikasi:
assets/
├── css/ # File CSS
│ ├── style.css
│ └── desktop.combined.min.css
├── js/ # File JavaScript
│ ├── ajax-handler.js
│ └── desktop.combined.min.js
├── images/ # Gambar
│ ├── favicon.ico
│ └── cover.png
└── fonts/ # Font
Direktori ini berisi semua controller yang menangani request HTTP:
controllers/
├── Admin/ # Controllers untuk area admin
│ ├── AccessController.php
│ └── AccountController.php
├── AdminController.php # Base controller untuk admin
├── Api/ # Controllers untuk API
├── ApiController.php # Base controller untuk API
├── Frontend/ # Controllers untuk frontend
│ ├── AboutController.php
│ └── BlogController.php
└── FrontendController.php # Base controller untuk frontend
Direktori ini berisi model dan repository yang merepresentasikan data dan logika bisnis:
models/
├── Domain/ # Entities domain
│ ├── NexaAuthEntity.php
│ └── NexaUserEntity.php
├── Repositories/ # Repository untuk akses data
│ ├── NexaAuthRepository.php
│ ├── NexaProductRepository.php
│ └── NexaUserRepository.php
└── Role/ # Model untuk manajemen role
├── Control.php
├── Package.php
└── Select.php
Direktori ini berisi definisi route yang menghubungkan URL dengan controller:
routes/
├── api.php # Route untuk API
└── web.php # Route untuk web
Direktori ini berisi core framework dan komponen-komponen sistem:
system/
├── components/ # Komponen reusable
│ ├── NexaAvatar.php
│ ├── NexaJsonViewer.php
│ └── NexaPagination.php
├── Contracts/ # Interface dan kontrak
│ └── NexaRepositoryInterface.php
├── Dom/ # DOM handling
│ ├── NexaDom.php
│ └── NexaDomDev.php
├── Domain/ # Base domain classes
│ ├── NexaEntity.php
│ └── NexaValueObject.php
├── Events/ # Event handling
├── Helpers/ # Helper functions
├── log/ # Log files
├── Nexa.php # Core framework class
├── NexaBootstrap.php # Bootstrap aplikasi
├── NexaController.php # Base controller
├── Repositories/ # Base repositories
├── Services/ # Services
└── Storage/ # File storage
Direktori ini berisi template view untuk rendering HTML:
templates/
├── 404.html # Error page
├── dashboard/ # Admin dashboard templates
├── index.html # Main layout
├── mobile/ # Mobile-specific templates
├── tablet/ # Tablet-specific templates
└── theme/ # Theme components
├── header.html
├── footer.html
└── menu.html
Direktori ini berisi semua dependensi pihak ketiga yang diinstal melalui Composer. Direktori ini dikelola secara otomatis oleh Composer dan tidak boleh dimodifikasi secara manual.
File ini adalah entry point utama aplikasi yang menginisialisasi semua komponen framework dan menjalankan aplikasi:
// Load Composer autoloader
require_once __DIR__ . '/vendor/autoload.php';
// Import core classes
use App\System\Nexa;
use App\System\Helpers\NexaDebug;
try {
// Initialize Nexa
$nexa = Nexa::getInstance();
// Initialize debug system
NexaDebug::init();
NexaDebug::setErrorHandler();
// Initialize architectural patterns
\App\System\NexaBootstrap::initialize();
// Run the application
$nexa->Tatiye()->run();
} catch (Exception $e) {
// Handle errors
}
File ini berisi konfigurasi lingkungan seperti koneksi database, URL aplikasi, dan mode debug:
# Application
APP_NAME=NexaUI
APP_ENV=development
APP_DEBUG=true
APP_URL=http://localhost
# Database
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nexaui
DB_USERNAME=root
DB_PASSWORD=secret
File ini mendefinisikan dependensi proyek dan konfigurasi autoloading:
{
"name": "nexaui/framework",
"description": "Modern PHP Framework dengan Template Engine yang powerful",
"type": "project",
"require": {
"php": "^7.4|^8.0",
"vlucas/phpdotenv": "^5.3"
},
"autoload": {
"psr-4": {
"App\\": "./"
}
}
}
NexaUI mengikuti konvensi penamaan berikut:
Controller
(contoh: UserController
)User
)Repository
(contoh: UserRepository
)Entity
(contoh: UserEntity
).html
dan mengikuti struktur direktori yang sesuai dengan controllervendor/
system/
hanya untuk komponen core frameworkcontrollers/
, models/
, dll.)