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).