Deprixa Plus — Technical Architecture · Project Folder Structure
The project follows standard Laravel conventions with additional directories for services, React components, and localization files.
deprixa-plus/ ├── app/ │ ├── Console/ │ │ └── Commands/ │ │ └── CleanActivityLog.php # Prune old audit log entries │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── Auth/ # Login, register, password reset, 2FA │ │ │ ├── Api/ # API v1 controllers │ │ │ ├── Settings/ # All settings sub-controllers │ │ │ │ ├── BrandingController.php │ │ │ │ ├── CompanyController.php │ │ │ │ ├── LocaleController.php │ │ │ │ ├── NotificationsController.php │ │ │ │ ├── SecurityController.php │ │ │ │ └── UpdatesController.php │ │ │ ├── ShipmentController.php │ │ │ ├── ClientController.php │ │ │ ├── InvoiceController.php │ │ │ ├── ReportController.php │ │ │ └── DashboardController.php │ │ ├── Middleware/ │ │ │ ├── CheckPermission.php # Spatie permission gate middleware │ │ │ └── HandleInertiaRequests.php # Shares global Inertia props │ │ └── Requests/ # Form request validation classes │ ├── Models/ │ │ ├── User.php │ │ ├── Shipment.php │ │ ├── ShipmentStatus.php │ │ ├── Client.php │ │ ├── Invoice.php │ │ ├── InvoiceItem.php │ │ ├── Branch.php │ │ ├── ServiceType.php │ │ └── Setting.php # Key-value settings store │ └── Services/ │ ├── ShipmentService.php # Business logic for shipments │ ├── InvoiceService.php │ ├── NotificationService.php │ └── ReportService.php ├── config/ │ ├── app.php │ ├── auth.php │ ├── database.php │ ├── filesystems.php │ └── permission.php # Spatie permission config ├── database/ │ ├── migrations/ │ │ ├── 0001_01_01_000000_create_users_table.php │ │ ├── create_shipments_table.php │ │ ├── create_clients_table.php │ │ ├── create_invoices_table.php │ │ ├── create_branches_table.php │ │ ├── create_settings_table.php │ │ └── create_activity_log_table.php # From spatie/laravel-activitylog │ └── seeders/ │ ├── DatabaseSeeder.php │ ├── RoleSeeder.php # Creates all roles and permissions │ ├── UserSeeder.php # Default admin user │ ├── SettingSeeder.php # Default company settings │ └── ShipmentStatusSeeder.php ├── public/ │ ├── index.php │ ├── build/ # Compiled frontend assets (Vite output) │ └── storage -> ../storage/app/public # Symlink (php artisan storage:link) ├── resources/ │ ├── js/ │ │ ├── app.jsx # Inertia app entry point │ │ ├── bootstrap.js │ │ ├── Components/ │ │ │ ├── Layout/ # Sidebar, topbar, breadcrumb │ │ │ ├── UI/ # shadcn/ui adapted components │ │ │ ├── Shipment/ # Shipment-specific components │ │ │ └── Charts/ # Recharts wrappers │ │ ├── Layouts/ │ │ │ ├── AuthLayout.jsx # Login/register page wrapper │ │ │ └── AppLayout.jsx # Main authenticated app wrapper │ │ ├── Pages/ │ │ │ ├── Auth/ # Login, Register, ForgotPassword, 2FA │ │ │ ├── Dashboard/ # Dashboard.jsx with KPI cards + charts │ │ │ ├── Shipments/ # Index, Create, Show, Edit │ │ │ ├── Clients/ │ │ │ ├── Invoices/ │ │ │ ├── Reports/ │ │ │ └── Settings/ # All settings sub-pages │ │ └── i18n/ │ │ ├── en.json # English translations │ │ └── es.json # Spanish translations │ └── views/ │ ├── app.blade.php # Inertia root template │ └── pdf/ # PDF Blade templates (invoices, labels) ├── routes/ │ ├── web.php # All Inertia page routes (authenticated) │ ├── api.php # REST API v1 routes (Sanctum) │ └── console.php # Scheduled command definitions ├── storage/ │ ├── app/ │ │ └── public/ # User uploads (accessible via symlink) │ ├── framework/ │ │ ├── cache/ │ │ ├── sessions/ │ │ └── views/ # Compiled Blade view cache │ └── logs/ │ └── laravel.log ├── .env # Environment configuration (not in git) ├── artisan # Laravel CLI entry point ├── composer.json ├── package.json └── vite.config.js