A set of Artisan commands to automatically generate Repository, Interface, and Service classes in your Laravel application with clean structure and naming conventions. Inspired by clean architecture — made simple and fun!
- Laravel 8 or above
- PHP 8.0+
- Your model classes should exist before running the repository generation
app/
├── Models/
│ └── Product.php
├── Repositories/
│ ├── ProductRepository.php
│ └── Interfaces/
│ └── ProductRepositoryInterface.php
├── Services/
│ └── ProductService.php
composer require laralearn/larastructor
php artisan larastruct:make-model
You'll be prompted for:
Model name
Table name
Fillable fields
Hidden fields
Soft delete support
What it does:
Checks if the model already exists in the given path
Creates a model file inside app/Models
php artisan larastruct:make-repository {model} --model-path=Models
Options:
model – The name of your model (e.g. Product)
--model-path – Relative path to your model directory (default: Models)
Checks if the given model exists in the specified path
Creates:
ProductRepository.php in app/Repositories
ProductRepositoryInterface.php in app/Repositories/Interfaces
Adds boilerplate CRUD methods
Options:
repository – The name of your repository/model (e.g. Product)
--repository-path – Relative path to your repositories (default: Repositories)
Checks if the repository and interface exist
Creates a service class in app/Services
Injects the interface in the constructor
Adds methods: getAll, getById, create, update, delete
php artisan larastruct:make-service {model} --model-path=Models
Options:
model – The name of your model (e.g. Product)
--model-path – Relative path to your model directory (default: Models)
What it does:
Checks if the model exists
Creates a service class in app/Services
Injects the model in the constructor
Adds basic methods like getAll, getById, create, update, delete
class ProductRepository
{
public function all() { ... }
public function find($id) { ... }
public function create(array $data) { ... }
public function update($id, array $data) { ... }
public function delete($id) { ... }
}
Would you like to improve this tool or add new features? Feel free to fork and submit a PR. Let’s make LaraStructor even cooler together
- @lokeshrangani
- waiting for yourname