Modular architecture (DDD)
Introduction
When building large-scale applications with Filament, you may want to organize your code using Domain-Driven Design (DDD) principles, splitting your application into self-contained modules. This guide explains how to integrate Filament with modular architecture packages like InterNACHI/Modular.
The modular approach
In a modular architecture, each domain of your application is structured as a separate Composer package, typically located in an app-modules/ directory. Each module contains its own:
- Models and business logic
- Filament resources, pages, and widgets
- Service provider
- Routes, views, and configurations
- Tests
This approach offers several benefits:
- Clear separation of concerns between domains
- Easier team collaboration (different teams can own different modules)
- Better testability and maintainability
- Ability to reuse modules across projects