Skip to content

🧬 Generate clean, typed DTO classes from YAML definitions in Laravel β€” fast, testable, and modular.

License

Notifications You must be signed in to change notification settings

Grazulex/laravel-arc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Laravel Arc

Laravel Arc

Generate modern, type-safe Data Transfer Objects (DTOs) in Laravel from clean YAML definitions β€” with automatic validation, nested support, and fluent collection handling.

Latest Version Total Downloads License PHP Version Laravel Version Tests Code Style

Overview

Laravel Arc is a powerful Laravel package that simplifies Data Transfer Object (DTO) management through YAML-driven generation. Define your DTOs in simple YAML files and let Laravel Arc generate type-safe, validated PHP classes with automatic property access and comprehensive collection support.

Think of it as Laravel API Resources, but with stronger typing, automatic validation, and generated from YAML definitions.

🎯 Key Features

  • πŸ—οΈ YAML-Driven Generation - Define DTOs in clean, readable YAML
  • πŸ”’ Type Safety - Full PHP 8.3+ type enforcement with readonly properties
  • βœ… Automatic Validation - Generate Laravel validation rules from field definitions
  • οΏ½ ModelSchema Integration - 65+ advanced field types (geometric, JSON, enhanced validation)
  • οΏ½πŸ”„ Field Transformers - Built-in data transformation (trim, slugify, normalize, etc.)
  • πŸ“Š Export Formats - Convert to JSON, XML, CSV, YAML, and more
  • 🎯 Behavioral Traits - Timestamps, UUIDs, soft deletes, and tagging
  • πŸš€ Modern PHP - Leverages PHP 8.3+ features and best practices

πŸ”§ Advanced Field Types (ModelSchema Integration)

Laravel Arc integrates with grazulex/laravel-modelschema to provide 65+ advanced field types:

# Traditional Arc types
fields:
  name:
    type: string
  age:
    type: integer

# Advanced ModelSchema types  
fields:
  coordinates:
    type: point          # Geographic point
  boundary:
    type: polygon        # Geographic polygon
  metadata:
    type: json           # JSON with validation
  tags:
    type: set            # Set collection
  email:
    type: email          # Enhanced email validation
  settings:
    type: jsonb          # PostgreSQL JSONB

Supported Advanced Types:

  • 🌍 Geometric: point, polygon, geometry, linestring
  • πŸ“‹ JSON: json, jsonb, set, array
  • πŸ“§ Enhanced String: email, uuid, url, slug, phone
  • πŸ”’ Numeric Variations: bigint, tinyint, decimal, money
  • πŸ“… Date/Time: datetime, timestamp, date, time

πŸ“š Complete Documentation

➑️ Visit the Wiki for complete documentation, examples, and guides

The wiki contains:

πŸ“¦ Quick Installation

composer require grazulex/laravel-arc
php artisan vendor:publish --provider="Grazulex\LaravelArc\LaravelArcServiceProvider"

πŸš€ Quick Start

  1. Create a DTO definition:
php artisan dto:definition-init UserDTO --model=App\\Models\\User --table=users
  1. Generate the DTO class:
php artisan dto:generate user.yaml
  1. Use your DTO:
$userData = ['name' => 'John Doe', 'email' => 'john@example.com'];
$userDto = UserDTO::fromArray($userData);

echo $userDto->name; // 'John Doe'
echo $userDto->toJson(); // JSON representation

⚠️ Important Notes

YAML Validation Rules with Commas

When using validation rules that contain commas (like exists:table,column), wrap them in quotes:

# ❌ Wrong - gets split into separate rules
rules: [required, exists:users,id]

# βœ… Correct - stays as one rule  
rules: [required, "exists:users,id"]

This applies to rules like: "exists:table,column", "unique:table,column", "in:value1,value2,value3", etc.

πŸ“– Learn More

πŸ”§ Requirements

  • PHP: ^8.3
  • Laravel: ^12.19
  • Carbon: ^3.10

πŸ§ͺ Testing

composer test

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

πŸ”’ Security

Please review our Security Policy for reporting vulnerabilities.

πŸ“„ License

Laravel Arc is open-sourced software licensed under the MIT license.


Made with ❀️ by Jean-Marc Strauven

About

🧬 Generate clean, typed DTO classes from YAML definitions in Laravel β€” fast, testable, and modular.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors 4

  •  
  •  
  •  
  •  

Languages