🚀 Laravel Modular Development: Internal Modules or Reusable Packages? As a Laravel application g...🚀 Laravel Modular Development: Internal Modules or Reusable Packages? As a Laravel application g...
The network for creativity
Join 1.25M professional creatives like you
Connect with clients, get discovered, and run your business 100% commission-free
Creatives on Contra have earned over $150M and we are just getting started
🚀 Laravel Modular Development: Internal Modules or Reusable Packages?
As a Laravel application grows, keeping everything inside the default Models, Controllers and Services directories can make the codebase difficult to maintain.
This raises an important question:
Should we create modules inside one Laravel application or develop separate Laravel packages?
Both approaches are useful—but at different stages.
1️⃣ Start Simple
During early development, requirements frequently change. A conventional Laravel structure helps us build faster without prematurely defining package boundaries.
⚠️ However, starting simple should not mean placing all business logic inside controllers. Services, actions, events, contracts and policies should still separate responsibilities.
2️⃣ Modularize as the Application Grows
Once domain boundaries become clear, related code can be moved into internal modules such as:
✔️ Identity and Access Control
✔️ Catalog
✔️ Listings and Moderation
✔️ CMS and Form Builder
✔️ Monetization
✔️ Search, Analytics and SEO
Each module can own its models, migrations, routes, controllers, services, requests, policies, events, enums, seeders and tests.
Modules should communicate through ✅ services, contracts or events instead of ❌ accessing one another’s internal implementation.
This creates a modular monolith: strong separation while retaining the simplicity of developing and deploying one application.
3️⃣ Let the First Application Reveal Patterns
While building the first application, it is difficult to predict which components will be reusable.
Something that appears generic may eventually depend heavily on product-specific rules, workflows or database structures. Completing the first application reveals the real module boundaries.
4️⃣ Confirm Reuse in Another Application
When building a second application, repeated patterns become visible. A module may be suitable for extraction when:
♻️ Multiple applications require it.
🔁 Its core behaviour remains similar.
⚙️ Differences can be configured.
🔌 It provides a stable public API.
🧩 It has few application-specific dependencies.
📦 Independent versioning provides value.
A Form Builder, Media Manager, Audit Log or Payment Gateway abstraction may become a reusable package.
However, marketplace-specific Listings, Dealers or Moderation modules may remain internal because their rules are closely connected to that product.
I created an engaging 404 page design concept for a recent website design client work. Made with a predesigned poster mapped into 3d puzzle pieces using 3Js.
I designed and built this interactive web experience for Legerdemain.
Transforming the concept from a flat 2D CSS and SVG mockup into a responsive 3D environment was a fun exploration of card physics, casino-table textures, and "sleight of hand" motion. Pairing a bilingual German-English luxury layout with hover-reactive 3D card flips, choreographed deck flourishes, and a playable mind-reading trick opened up a lot of possibilities for creating interactions that feel alive and screams premium luxury, not just animated for the sake of it.
A digital portfolio showcasing my work across Product Management, Product Analysis, and UI/UX Design.
I built this portfolio to document how I approach digital products — from understanding problems and user needs to defining solutions and creating meaningful experiences.