kroderdev/laravel-microservice-core

A toolkit to use Laravel effectively as a microservice in a distributed architecture.

Installs: 129

Dependents: 0

Suggesters: 0

Security: 0

Stars: 4

Watchers: 0

Forks: 1

Open Issues: 2

pkg:composer/kroderdev/laravel-microservice-core

v0.5.0 2025-10-22 03:08 UTC

This package is auto-updated.

Last update: 2025-10-22 03:10:12 UTC


README

Packagist Version Downloads License

A Laravel package that simplifies building microservices in distributed architectures. It provides authentication, request handling, and service-to-service communication tools to make Laravel scalable and production-ready in microservice environments.

Key Features

This package packages common microservice concerns so you can focus on your service logic:

  • JWT authentication middleware and a session guard for frontend interactions
  • Correlation ID propagation for tracing requests across services
  • Role and permission gates with convenient helpers
  • HTTP client macros and a configurable API Gateway client
  • Base model and query builder class for working with remote resources through the gateway
  • Optional health check endpoint out of the box

Quick start

Install the package via Composer:

composer require kroderdev/laravel-microservice-core

Publish the configuration to customize defaults:

php artisan vendor:publish --provider="Kroderdev\LaravelMicroserviceCore\Providers\MicroserviceServiceProvider"

Basic usage

Configure your API gateway URL and JWT settings in config/microservice.php. Then extend the base model to interact with remote resources:

Scaffold your remote model via the new Artisan command:

php artisan make:model RemoteUser --remote

This will generate a RemoteUser model that extends the core Model class with remote-resource support.

use Kroderdev\LaravelMicroserviceCore\Models\Model;

class RemoteUser extends Model
{
    protected static string $endpoint = '/users';
    protected $fillable = ['id', 'name'];
}

$users = RemoteUser::all();

Add the provided middleware to your routes to validate JWTs and propagate correlation IDs:

Route::middleware(['jwt.auth'])->group(function () {
    Route::get('/profile', fn () => 'ok');
});

Documentation

Full documentation lives in the project wiki.

Contributing

Contributions welcome! See CONTRIBUTING.md for guidelines.

License

This project is open-sourced software licensed under the MIT license.