Module Overview

The src/Modules directory contains feature modules that sit alongside the main Laravel app. Each module owns a focused business area and usually ships its own service provider, config file, routes, migrations, views, Filament resources, jobs, and integration services.

Most modules follow this shape:

  • A *ServiceProvider.php that registers config, migrations, views, routes, commands, Filament panels, and event listeners.
  • A config/*.php file for module-specific settings.
  • Optional routes/web.php and routes/api.php files.
  • Optional database/Migrations files for tables owned by the module.
  • Optional Models, Jobs, Events, Listeners, Services, Support, and Filament directories.

Current Modules

ModulePrimary Purpose
CPQScaffold for configure-price-quote functionality.
CalendarCalendar and calendar event APIs, Google Workspace import, invites, and Filament management.
EsignElectronic signature templates, envelopes, provider callbacks, and signing status events.
PartnerPortalChannel partner records, partner users, and partner lead management.
PicERPPIC ERP integration, configurator proxy routes, datasources, and purchase order sync jobs.
QuickbooksQuickBooks Online OAuth credentials, object sync workflows, webhook jobs, and accounting admin tools.
TelephonyNon-SMS telephony drivers, call logs, call context, extension assignment, and telephony admin UI.
TicketingTicket model, ticket state classes, and the base service ticket table.

Adding Or Changing A Module

When working in a module, check the service provider first. It tells you which routes, config, migrations, events, commands, and panels are actually registered at runtime.

After changing module config or routes, run:

php artisan optimize:clear

When adding migrations inside a module, keep them under the module's database/Migrations directory so the provider can load them with the rest of the module.