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

Atrium Laravel Package

atriumphp/atrium

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Hierarchical Data Modeling: Enables nested resource relationships (e.g., Projects → Tasks → Subtasks) with scoped CRUD operations, reducing the need for custom middleware or complex query logic. Supports parent-child dependencies (e.g., filtering, validation, and UI isolation) out-of-the-box, aligning with domain-driven design (DDD) patterns.
  • Decoupled Relation Management: Extractable relation configurations (->using()) allow teams to modularize complex relationships (e.g., separating Article ↔ Tags logic from the Article resource). Reduces technical debt by isolating business rules (e.g., pivot table logic, authorization hooks) into reusable components.
  • Flexible UI/UX for Relationships: Server-driven tabbed interfaces for multi-relation resources (e.g., a User with Posts, Comments, and Roles) improve developer velocity by eliminating manual tab-switching logic. Many-to-many managers with attach/detach actions and pivot columns streamline workflows like tagging or role assignment.
  • Customizable Identifiers: Supports natural keys (e.g., slugs like /articles/my-first-post) or non-standard primary keys (e.g., uuid fields), enabling SEO-friendly URLs or legacy system integration without custom route binding.
  • Read-Only View Pages: Standardizes record details screens (e.g., /articles/1) with configurable layouts, reducing boilerplate for audit trails, dashboards, or public-facing previews. The ViewPage opt-in model ensures backward compatibility while enabling progressive enhancement.
  • Authorization Granularity: Fine-grained hooks (canAssociate, canDetach, etc.) let PMs scope permissions to specific relations (e.g., "Only admins can dissociate tags from articles") without monolithic RBAC systems. Aligns with least-privilege principles for microservices or multi-tenant apps.
  • Migration Path for Symfony UX: Adoption of Symfony UX Icons future-proofs the package against deprecations in underlying libraries (e.g., Font Awesome) while maintaining visual consistency.

When to Consider This Package

Adopt If:

  • Your Laravel app manages hierarchical or relational data (e.g., e-commerce categories → products, SaaS feature flags → users) and you’re tired of writing custom controllers for nested routes/CRUD.
  • You need many-to-many relationships with pivot tables (e.g., tags, roles) but want to avoid manual pivot entity mapping or bulk-query logic.
  • Your team prioritizes developer velocity over customization: The package handles 90% of CRUD + relations with minimal configuration (e.g., relations()->make(Post::class)->oneToMany('comments')).
  • You require flexible identifiers (e.g., slugs, UUIDs) for URLs or APIs, but want to avoid reinventing route resolution.
  • Your roadmap includes read-only record views (e.g., for analytics, audits, or public previews) without duplicating form logic.

Look Elsewhere If:

  • You’re heavily invested in custom admin panels (e.g., hand-written Blade templates, non-Livewire components) and resist framework opinions.
  • Your app uses non-Doctrine ORMs (e.g., Eloquent-only features like scopeQuery() may require adapters).
  • You need real-time collaboration (e.g., shared editing of nested resources) or offline-first sync (this package is server-rendered).
  • Your stakeholders demand pixel-perfect UI control over relation managers (e.g., custom modal layouts, non-tabbed interfaces).
  • You’re locked into a pre-1.0 version and can’t tolerate API changes (minor versions may still break public methods; see release notes).

How to Pitch It (Stakeholders)

For Executives:

*"This package cuts 6–12 weeks of dev time per major feature by handling nested data relationships, permissions, and UI patterns automatically. For example:

  • E-commerce: Manage Categories → Products → Inventory with scoped CRUD, no custom middleware.
  • SaaS: Assign Roles → Permissions to users via a tabbed interface with attach/detach actions—built in.
  • Public APIs: Expose read-only record views (e.g., /articles/{slug}) with zero additional backend logic.

It’s like Laravel Nova for relational data, but open-source and tailored to Laravel’s ecosystem. The tradeoff? We adopt a framework opinion (e.g., Livewire for dynamic tables) to deliver 80% of use cases out-of-the-box. For custom needs, we can extend it—this is a build vs. buy decision where ‘buy’ gives us velocity now and flexibility later."*

For Engineering:

*"This is a batteries-included solution for:

  1. Nested Resources: Parent-child relationships with automatic route scoping, breadcrumbs, and FK validation. Example:

    AdminResource::parent()->make(Project::class)->relationship('tasks');
    

    → Generates /projects/1/tasks, filters tasks by project_id, and 404s orphaned records.

  2. Relation Managers: One-to-many (create/edit/delete) and many-to-many (attach/detach) with authorization hooks and pivot columns. No more writing custom pivot entity classes or bulk-query logic.

  3. Extraction Pattern: Move complex relations (e.g., Article ↔ Tags) into dedicated config classes to decouple business logic from resources.

  4. View Pages: Read-only screens for records (e.g., /articles/1) with a schema system—reuses your form fields or lets you define custom layouts.

Breaking Changes to Watch:

  • Relation::form() closures now activate in modals (previously ignored). Update any resources using inline forms.
  • DataProviderInterface::find() gains an $idField parameter (backward-compatible but requires updates to custom providers).

Migration Path:

  • Start with one resource (e.g., Post → Comments) to test nesting.
  • Use ->using() to extract relations gradually (e.g., move Tags logic to a separate class).
  • Leverage authorization hooks to gate actions without monolithic RBAC.

Alternatives Considered:

  • Custom Controllers: More flexible but 3–5x slower to develop/maintain.
  • Nova/Panel: Proprietary, higher TCO, and less Laravel-native.
  • Manual Livewire Components: Rebuilds what this package already solves.

Recommendation: Pilot with a non-critical module (e.g., a blog’s comments system) to validate the tradeoff between convention and customization."*

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.
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor
spatie/laravel-javascript-views