Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Maboo Maker Bundle Laravel Package

bornfight/maboo-maker-bundle

Symfony bundle that generates boilerplate for layered architectures. Provides interactive scaffolding plus makers for modules, Doctrine entities/domain models, write models, mappers, repositories, validators, managers, resolvers, mutations, fixtures, and GraphQL schema/types.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Layered Architecture Alignment: The package is explicitly designed for layered architecture (Domain-Driven Design patterns), which aligns well with Laravel’s modularity and Symfony-inspired bundles. It enforces separation of concerns (Domain, Application, Infrastructure) and integrates seamlessly with Doctrine, GraphQL, and Symfony’s MakerBundle patterns.
  • Domain-Driven Design (DDD) Support: Generates bounded contexts (modules), domain models, repositories, and mappers—key components for DDD. This reduces cognitive load for developers working on complex domains (e.g., hospitality, SaaS).
  • GraphQL-First Approach: Automates GraphQL schema generation (types, mutations, resolvers), which is critical for API-driven Laravel applications. This reduces manual YAML/GraphQL SDL maintenance and ensures consistency between backend and frontend schemas.
  • PHP 8+ Features: Leverages property promotion, strict return types, and attributes, which modernizes the codebase and improves IDE support (autocompletion, refactoring). This is a blocker for PHP 7.x projects.

Integration Feasibility

  • Laravel/Symfony Compatibility:
    • Works with Laravel 9+ (PHP 8.0+) and Symfony 5.4+ due to Doctrine and Symfony MakerBundle dependencies.
    • Requires Doctrine ORM (for entities, repositories, fixtures) and GraphQL (for schema generation).
    • Symfony Flex support simplifies installation, but manual bundle registration is needed for non-Flex setups.
  • Dependency Overhead:
    • Adds ~20+ dependencies (e.g., symfony/maker-bundle, doctrine/orm, webonyx/graphql-php). Assess whether your project already uses these or if this introduces bloat.
    • Dev-only dependencies: All generated code is in src/, so runtime impact is minimal.
  • Customization Limits:
    • No support for updating existing files (v0.6.2). This could be a showstopper if you need to refactor legacy code.
    • Scalar fields only (no complex types like collections, custom value objects). Requires manual workarounds for advanced use cases.
    • Foreign key support is partial (v0.5.0), but relationships (e.g., one-to-many) are unsupported. This may limit adoption for relational-heavy domains.

Technical Risk

Risk Area Assessment Mitigation Strategy
PHP Version Lock Requires PHP 8.0+ (property promotion, strict types). Laravel 8.x (PHP 7.4) projects cannot use this without upgrading. Phase PHP upgrade in parallel with adoption; use feature flags to isolate generated code.
Doctrine Dependency Tight coupling with Doctrine ORM. Projects using Eloquent or other ORMs may need adapters or manual overrides. Evaluate Doctrine adoption as a prerequisite; document workarounds for Eloquent users.
GraphQL Lock-in Assumes GraphQL is the API layer. REST or other API styles require manual overrides. Abstract GraphQL generation behind interfaces; support REST via separate templates.
Template Rigidity Generated code follows fixed templates. Customizing logic (e.g., adding business rules) requires manual edits post-generation. Extend templates via make:maboo-* hooks or create a wrapper layer for custom logic.
Migration Complexity Generating migrations for existing entities is unsupported. Refactoring legacy code could be painful. Use the bundle only for new features; manually scaffold legacy entities.
Testing Overhead Generated code lacks built-in test templates. Teams must manually write unit/integration tests for new components. Integrate with Pest/PHPUnit via custom commands or templates.
Long-Term Maintenance Small community (4 stars, 0 dependents). Risk of stagnation or breaking changes. Fork and maintain if critical; contribute to upstream to influence roadmap.

Key Questions for Stakeholders

  1. PHP Version:

    • "Can we upgrade to PHP 8.0+ to support property promotion and strict types?"
    • "What’s the timeline for PHP upgrades, and how does this align with the bundle’s adoption?"
  2. Architecture Strategy:

    • "Are we committed to a layered/DDD architecture, or is this overkill for our current needs?"
    • "How does this fit with our existing API layer (GraphQL/REST)? Can we abstract the GraphQL generation?"
  3. Tooling Dependencies:

    • "Do we already use Doctrine, Symfony MakerBundle, or GraphQL? If not, what’s the cost to adopt these?"
    • "Are we open to adding ~20+ dev dependencies for this bundle?"
  4. Legacy Code:

    • "How much of our codebase is legacy? Can we use this bundle only for new features?"
    • "What’s the plan for refactoring existing entities to use this pattern?"
  5. Developer Experience:

    • "How will this reduce boilerplate for our team? What’s the expected productivity gain?"
    • "Are we willing to trade some flexibility (e.g., template rigidity) for faster development?"
  6. Maintenance:

    • "Who will maintain this bundle long-term if the upstream project stagnates?"
    • "How will we handle breaking changes in future versions?"
  7. Testing:

    • "How will we ensure generated code is testable? Will we need to add test templates?"
    • "What’s the strategy for testing GraphQL mutations/resolvers generated by this bundle?"

Integration Approach

Stack Fit

Component Fit Level Notes
Laravel 9+ ✅ Excellent PHP 8.0+ support aligns with Laravel 9/10. Works with Laravel’s service container and routing.
Symfony 5.4+ ✅ Excellent Designed for Symfony’s MakerBundle patterns; integrates with Symfony’s bundles (e.g., Doctrine, GraphQL).
Doctrine ORM ✅ Excellent Core dependency for entities, repositories, and fixtures. No Eloquent support.
GraphQL (Webonyx) ✅ Excellent Automates schema generation for mutations, queries, and types. Assumes GraphQL is the primary API layer.
PHP 8.0+ ❌ Blocking Property promotion and strict types are required. PHP 7.x projects cannot use this without upgrading.
Eloquent ORM ⚠️ Partial No native support; would require custom templates or adapters.
REST APIs ⚠️ Partial GraphQL-first design means REST APIs would need manual overrides (e.g., controllers, DTOs).
Custom Value Objects ❌ Not Supported Only scalar fields (string, int, bool, float) are supported. Complex types require manual implementation.
Event Sourcing ❌ Not Supported No support for event stores, projections, or CQRS patterns.

Migration Path

  1. Phase 1: Assessment & Setup (2–4 weeks)

    • Upgrade PHP: Ensure PHP 8.0+ compatibility (test with php -r "echo PHP_VERSION_ID >= 80000 ? 'OK' : 'Upgrade needed';").
    • Dependency Audit: Verify Doctrine, Symfony MakerBundle, and GraphQL are compatible with your Laravel version.
    • Pilot Project: Select a non-critical module (e.g., Booking) to test the bundle.
    • Template Customization: Fork the bundle to add missing features (e.g., REST support, custom value objects).
  2. Phase 2: Pilot Implementation (4–6 weeks)

    • Generate New Features: Use make:maboo-scaffold for new entities (e.g., Hotel, Room).
    • Integrate with Existing Code: Manually wire generated components (e.g., resolvers, managers) into existing services.
    • Test GraphQL Schema: Validate mutations/queries work as expected.
    • Document Workarounds: Note limitations (e.g., no foreign key support) and track issues for future versions.
  3. Phase 3: Gradual Adoption (Ongoing)

    • New Development: Default to using the bundle for all new entities.
    • Legacy Refactoring: Manually scaffold existing entities using the bundle’s templates (if updating is unsupported).
    • Custom Templates: Extend the bundle to support REST, events, or custom types.
    • CI/CD Integration: Add checks to ensure generated code passes PHPStan/Psalm and tests.
  4. **Phase 4: Full Migration (6–

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
craftcms/url-validator
directorytree/privacy-filter-classifier
directorytree/privacy-filter
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata
splash/openapi
splash/scopes
splash/toolkit
testo/output-teamcity
testo/bridge-symfony