foxws/laravel-algos

Create algos for your Laravel application
2,685 2
Install
composer require foxws/laravel-algos
Latest Version:0.3.2
PHP:^8.2
Laravel:12 · 13
Older releases:10 · 11
License:MIT
Last Updated:Oct 14, 2026
Links: GitHub  ·  Packagist
Maintainer: francoism90

Laravel Algos

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

This package can be used to create algorithms (algos) for your Laravel application.

See the full documentation (or browse docs/ directly): Installation, Usage.

Installation

You can install the package via composer:

composer require foxws/laravel-algos

[!TIP] Let your AI agent do the hard parts. This package ships a Laravel Boost skill, algos-development, that teaches your agent how to install, configure and use Laravel Algos. Install Boost and select the skill when prompted:

composer require laravel/boost --dev
php artisan boost:install

Already using Boost? Run php artisan boost:update --discover to pick up the skill. Then just ask, for example: "Create an algo that builds a personal feed of five posts for the current user."

Usage

Generate an Algo class (you may also use php artisan make:algo MyAlgo):

use Foxws\Algos\Algos\Algo;
use Foxws\Algos\Algos\Result;
use Foxws\Algos\Tests\Models\Post;
use Foxws\Algos\Tests\Models\User;
use Illuminate\Support\Collection;
use Illuminate\Support\Str;

class GenerateUserFeed extends Algo
{
    protected ?User $user = null;

    public function handle(): Result
    {
        $hash = $this->generateUniqueId();

        cache()->set(
            $this->generateUniqueId(),
            ['ids' => (array) $this->getCollection()],
            now()->addMinutes(10),
        );

        return $this
            ->success('Feed generated successfully')
            ->with('hash', $hash);
    }

    public function model(User $user): self
    {
        $this->user = $user;

        return $this;
    }

    protected function getCollection(): Collection
    {
        return Post::query()
            ->select('id')
            ->where('user_id', $this->user->getKey())
            ->inRandomOrder()
            ->take(5)
            ->get();
    }

    protected function generateUniqueId(): string
    {
        return Str::ulid();
    }
}

To run the algorithm:

$algo = GenerateUserFeed::make()->model($user)->run();

// $algo->status; // success, failed, skipped
// $algo->message; // reason
// $algo->meta; // array of metadata

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

644,549,754 9,698
laravel/framework

The Laravel Framework.

598,760,099 34,966
laravel/tinker

Powerful REPL for the Laravel framework.

507,193,856 7,441
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

423,477,751 607
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

399,241,428 4,660

Version History

Version Released PHP Laravel License
0.3.2 ^8.2 ^12.0|^13.0 MIT
0.3.1 ^8.2 ^12.0|^13.0 MIT
0.3.0 ^8.2 ^12.0|^13.0 MIT
0.2.0 ^8.2 ^11.0|^12.0 MIT
0.1.0 ^8.2 ^11.0|^12.0 MIT