Documentation

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

The app/ 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.