Skip to content

Source Code Structure

Overview

WhatsMarkSaaS is built on the modern TALL stack (Tailwind CSS, Alpine.js, Livewire, Laravel) providing a robust SaaS platform for WhatsApp marketing automation. This structure ensures scalability, maintainability, and developer-friendly architecture.

Technology Stack

  • Laravel 12 - Backend PHP framework for robust API and business logic
  • Livewire 3 - Full-stack reactive components without complex JavaScript
  • Alpine.js - Minimal JavaScript framework for enhanced interactivity
  • Tailwind CSS - Utility-first CSS framework for rapid UI development

Important Developer Notice

This page contains technical developer documentation only.

Before making custom changes:

  • TALL Stack Knowledge Required: Custom modifications require solid understanding of Laravel, Livewire, Alpine.js, and Tailwind CSS
  • Risk Warning: Improper changes may break your application functionality
  • Limited Support: If you make custom modifications to the original script, our technical support will be limited
  • Backup First: Always create a complete backup before making any custom changes
  • Testing Required: Test all modifications in a development environment before applying to production

Main Application Structure

php
whatsmark-saas/
├── app/                        # Application core
├── bootstrap/                  # Application bootstrapping
├── config/                     # Configuration files
├── database/                   # Database migrations, seeds, factories
├── public/                     # Web server document root
├── resources/                  # Views, assets, language files
├── routes/                     # Route definitions
├── storage/                    # Generated files, logs, cache
├── tests/                      # Automated tests
├── vendor/                     # Composer dependencies
├── Modules/                    # Custom modules (if using modular architecture)
├── .env                        # Environment configuration
├── artisan                     # Laravel command-line interface
├── composer.json               # PHP dependencies
├── package.json                # Node.js dependencies
└── vite.config.js              # Vite build configuration

Application Core (/app)

Key Directories

php
app/
├── Http/
   ├── Controllers/       # Traditional controllers
   └── Middleware/        # Request middleware
├── Livewire/             # Livewire components (main UI layer)
├── Models/               # Eloquent models
├── Providers/            # Service providers
├── Console/              # Artisan commands
└── Policies/             # Authorization policies

Livewire Components (/app/Livewire)

What it does: Houses all reactive UI components organized by feature and user type. Why it's useful: Provides clean separation of concerns and makes the codebase maintainable and scalable.

php
Livewire/
├── Admin/                # Admin panel components
   ├── Dashboard.php
   ├── Tenant/          # Tenant management
   ├── TenantList.php
   ├── TenantCreator.php
   └── TenantDetails.php
   ├── Plan/            # Subscription plans
   ├── PlanList.php
   └── PlanCreator.php
   ├── Subscription/    # Subscription management
   ├── SubscriptionList.php
   └── InvoicesList.php
   ├── Settings/        # Application settings
   ├── PaymentGateway/
   ├── Website/
   └── System/
   └── WhatsApp/        # WhatsApp integration
├── Auth/                # Authentication components
├── Frontend/            # Public-facing components
└── Tenant/              # Tenant dashboard components

Configuration (/config)

What it does: Contains all application configuration files for different services and features. Why it's useful: Centralizes settings management and makes environment-specific configurations easy to manage.

Essential configuration files:

php
config/
├── app.php              # Core application settings
├── database.php         # Database connections
├── livewire.php         # Livewire configuration
├── tenant.php           # Multi-tenancy settings
├── subscription.php     # Billing configuration
├── whatsapp.php         # WhatsApp API settings
├── payment.php          # Payment gateway settings
└── restrictions.php     # Domain/subdomain restrictions

Routes (/routes)

What it does: Organizes all application routes by user type and functionality. Why it's useful: Keeps routing logic clean and makes it easy to manage access control.

php
routes/
├── web.php              # Public web routes
├── api.php              # API endpoints
├── auth.php             # Authentication routes
├── admin.php            # Admin panel routes
└── tenant.php           # Tenant dashboard routes

Route Examples

php
// Admin routes use Livewire components directly
Route::get('tenants', TenantList::class)->name('tenants.list');
Route::get('subscriptions', SubscriptionList::class)->name('subscriptions.list');

// Tenant routes
Route::get('dashboard', TenantDashboard::class)->name('tenant.dashboard');

Resources (/resources)

What it does: Contains frontend assets, views, and language files. Why it's useful: Organizes all presentation layer components in a logical structure.

php
resources/
├── views/
   ├── layouts/         # Base layouts (admin, tenant, frontend)
   ├── livewire/        # Livewire component views
   ├── components/      # Reusable Blade components
   ├── admin/           # Admin-specific views
   ├── tenant/          # Tenant-specific views
   └── frontend/        # Public website views
├── css/
   └── app.css          # Tailwind CSS compilation
├── js/
   └── app.js           # Alpine.js & application JS
└── lang/                # Multi-language translation files

Database (/database)

What it does: Contains database structure, sample data, and migration files. Why it's useful: Maintains database version control and provides consistent data structure across environments.

php
database/
├── migrations/          # Database schema migrations
├── seeders/            # Sample and default data
├── factories/          # Model factories for testing
└── settings/           # Application settings migrations

Multi-tenancy Architecture

What it does: Provides complete data isolation between customer accounts. Why it's useful: Ensures security, scalability, and customization for each SaaS customer.

Tenant Middleware

  • Path-based tenant detection
  • Database query scoping
  • Complete data isolation
  • Route protection and access control

Tenant-aware Components

  • All Livewire components respect tenant context
  • Automatic data filtering by tenant
  • Isolated file storage per tenant

Development Workflow

Creating Components

bash
# Create admin Livewire component
php artisan make:livewire Admin/FeatureName

# Create tenant Livewire component
php artisan make:livewire Tenant/FeatureName

Database Operations

bash
# Run migrations
php artisan migrate

# Seed sample data
php artisan db:seed

# Create new migration
php artisan make:migration create_feature_table

This architecture provides a scalable, maintainable foundation for the WhatsMarkSaaS platform using modern Laravel development practices.


When to Avoid Custom Changes:

  • If you're not familiar with the TALL stack architecture
  • If you don't have Laravel development experience
  • If you need the feature urgently without proper testing time
  • If you require full technical support coverage

Recommendation:

Use the built-in features and configuration options first. Contact support for feature requests before attempting custom development

© 2024 - Corbital Technologies. All rights reserved.