Project Structure and Organization

Understand the top-level layout, directory structure, and where key files live across the three applications.

SaasKitFy is organized as three independent applications in a single repository. Each has its own dependencies, build process, and deployment target.

Top-Level Layout

saaskitfy/
├── backend/              # Laravel REST API
├── frontend/             # React + TypeScript SPA
├── marketing/            # Plain PHP marketing site
├── docs/                 # Documentation (Markdown)
├── docker-compose.yml    # MySQL, Redis, Mailpit
├── CLAUDE.md             # AI assistant instructions
└── .gitignore

Backend

The Laravel API lives in backend/. It handles all business logic, authentication, billing, and data access.

backend/
├── app/
│   ├── Http/
│   │   ├── Controllers/
│   │   │   ├── Admin/           # 14 admin controllers
│   │   │   ├── Auth/            # 11 auth controllers
│   │   │   ├── Organization/    # 6 org controllers
│   │   │   └── Custom/          # Your custom controllers
│   │   └── Middleware/          # 12 middleware classes
│   ├── Models/                  # 17+ Eloquent models
│   │   └── Custom/              # Your custom models
│   ├── Services/                # Business logic services
│   │   └── Custom/              # Your custom services
│   ├── Billing/                 # 6 payment gateway drivers
│   ├── Jobs/                    # Queue jobs
│   ├── Notifications/           # 11 notification classes
│   ├── Policies/                # Authorization policies
│   └── Providers/               # Service providers
├── config/
│   ├── saas.php                 # Features, plans, tenant mode
│   ├── custom.php               # Your features, permissions, events
│   └── ...                      # Standard Laravel config
├── database/
│   ├── migrations/              # 9 migration files
│   └── seeders/                 # 8 seeders with demo data
├── routes/
│   ├── api.php                  # All API routes
│   └── custom.php               # Your custom routes
└── storage/
    └── api-docs/                # OpenAPI spec

Frontend

The React SPA lives in frontend/. It consumes the backend API and renders all UI.

frontend/
├── src/
│   ├── pages/
│   │   ├── admin/               # 12 admin pages
│   │   ├── auth/                # 6 auth pages
│   │   ├── org/                 # 8 org pages
│   │   └── custom/              # Your custom pages
│   ├── components/
│   │   ├── ui/                  # Shadcn UI components
│   │   └── ...                  # Layout, gates, nav
│   ├── stores/                  # Zustand state stores
│   ├── hooks/                   # Custom React hooks
│   ├── lib/                     # Axios, utilities
│   ├── custom/
│   │   ├── routes.tsx           # Your custom routes
│   │   └── navItems.ts          # Your sidebar items
│   ├── App.tsx                  # Main router
│   └── main.tsx                 # Entry point
├── package.json
├── tsconfig.json
└── vite.config.ts

Marketing

The marketing site lives in marketing/. Zero dependencies — just PHP templates, CSS, and JS.

marketing/
├── public/                      # Web root
│   ├── index.php                # Front controller
│   ├── router.php               # PHP dev server router
│   ├── css/style.css            # Styles
│   ├── js/
│   │   ├── app.js               # Dropdowns, theme, accordion
│   │   └── lucide.min.js        # Icons (self-hosted)
│   └── images/                  # Screenshots, favicon
├── config.php                   # Site config, plans, locales
├── routes.php                   # Page routes
├── lang/
│   ├── en.json                  # English strings
│   └── pt.json                  # Portuguese strings
├── src/
│   └── helpers.php              # i18n, showcase, breadcrumb
└── templates/
    ├── layouts/main.php         # HTML shell
    ├── partials/                # Header, footer, icons
    └── pages/                   # Home, features, pricing, docs

Docker Services

The docker-compose.yml at the root provides three services for local development:

services:
  larastarter_mysql     # MySQL 8 — port 3306
  larastarter_redis     # Redis — port 6379
  larastarter_mailpit   # Email UI — port 8025

All three are optional in production. Use managed databases, Elasticache, or skip Redis entirely (the backend falls back to database drivers).