Project Structure
Top-level directory layout and the thin app/ layer principle
Last updated: Feb 09, 2026
Project Structure
Top-level directory layout of the Cartxis platform.
cartxis/
├── app/ # Laravel application layer
│ ├── Events/ # Application events (ChannelThemeChanged)
│ ├── Http/
│ │ ├── Controllers/ # Auth & Settings controllers
│ │ ├── Middleware/ # HandleInertiaRequests, HandleAppearance
│ │ └── Requests/ # Form request validation
│ ├── Models/ # User model only — domain models live in packages
│ └── Providers/ # AppServiceProvider, FortifyServiceProvider, ThemeServiceProvider
│
├── packages/Cartxis/ # ★ CORE — 19 modular domain packages
│
├── resources/
│ ├── js/ # Vue 3 frontend source
│ │ ├── app.ts # Client entry — Inertia + Vue + Pinia
│ │ ├── ssr.ts # SSR entry (Node cluster mode)
│ │ ├── pages/ # Inertia page components
│ │ ├── components/ # Shared components (Admin/, ui/)
│ │ ├── composables/ # Vue composables (8 files)
│ │ ├── layouts/ # AdminLayout, AppLayout, AuthLayout
│ │ ├── Stores/ # Pinia stores (cartStore.ts)
│ │ ├── lib/ # axios.ts, utils.ts
│ │ ├── types/ # TypeScript type definitions
│ │ └── wayfinder/ # Auto-generated Laravel route helpers
│ ├── admin/ # Admin-specific assets, pages, CSS
│ ├── css/ # Global stylesheets
│ └── views/ # Blade templates (app.blade.php root)
│
├── themes/ # Theme packages (cartxis-default)
├── extension/ # Extension development guide & templates
├── routes/ # App-level route files
├── config/ # Laravel & package configuration
├── database/ # App-level migrations, factories, seeders
├── tests/ # Pest test suites
├── public/ # Web root (index.php, build output)
├── storage/ # Logs, cache, uploads
└── docs/ # End-user documentation
Key Principle
Theapp/ directory is intentionally thin. All domain logic — models, controllers, services, repositories, routes, migrations — lives inside packages/Cartxis/. The app/ layer handles only framework bootstrapping, user authentication, and Inertia middleware.