PHPackages                             rapide-software/sync-stack - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. rapide-software/sync-stack

ActiveLibrary[Queues &amp; Workers](/categories/queues)

rapide-software/sync-stack
==========================

A package for creating and running synchronisations after a deploy, running only those which have not run yet, akin to migrations. Useful for CI/CD integration or multidatabase solutions where what has run before is not necessarily in sync across databases.

v0.1.11(4mo ago)0550↓10.7%[1 PRs](https://github.com/rapideinternet/SyncStack/pulls)MITPHPPHP ^8.0.0

Since Mar 7Pushed 4mo ago1 watchersCompare

[ Source](https://github.com/rapideinternet/SyncStack)[ Packagist](https://packagist.org/packages/rapide-software/sync-stack)[ RSS](/packages/rapide-software-sync-stack/feed)WikiDiscussions main Synced yesterday

READMEChangelog (10)Dependencies (5)Versions (14)Used By (0)

Sync Stack
==========

[](#sync-stack)

A lightweight layer for running post-deploy synchronisations, similar to migrations but kept separate. It only executes sync files that have not been run before, making it handy for CI/CD pipelines or multi-database setups where environments may be out of sync.

Requirements
------------

[](#requirements)

- PHP ^8.0
- Laravel 11.41.3^/12^

Installation
------------

[](#installation)

```
composer require rapide-software/sync-stack
```

The service provider is auto-discovered.

Setup
-----

[](#setup)

1. Create the tracking table migration (defaults to `synchronisations`):

```
php artisan sync:migrate
php artisan migrate
```

Use `--path` to place the migration elsewhere or `--realpath` for absolute paths.

2. (Optional) Choose where your sync files live. By default they sit in `app/Synchronisations` using StudlyCase folders. Pass `--location` to any sync command to override, or `--fromBasePath` to target an absolute path under `base_path()`.

Creating synchronisations
-------------------------

[](#creating-synchronisations)

Generate a new sync file (timestamped automatically):

```
php artisan sync:create --name="update_permissions" --location=Synchronisations
```

`--abstractClass` lets you extend your own base class for shared helpers. As of yet, this feature is very barebones and simply writes the extends line for you.

Each sync is an anonymous class with two hooks:

```
return new class {
    public function sync(): void {
        // Synchronize what you want synchronized.
    }

    public function rollback(): void {
        // Rollback logic to undo your synchronization
    }
};
```

Running synchronisations
------------------------

[](#running-synchronisations)

Execute only the sync files that have not run yet:

```
php artisan sync:run --location=Synchronisations
```

- Files are discovered recursively under `--location` and keyed by their path in the `synchronisations` table.
- Each run uses the next batch number; `--continueOnFailure` keeps going after an error.

Rolling back
------------

[](#rolling-back)

Undo the most recent batch of syncs:

```
php artisan sync:rollback --location=Synchronisations
```

- Only the latest batch is rolled back; earlier batches stay intact.
- Use `--continueOnFailure` to attempt the rest even if one rollback fails.

License
-------

[](#license)

MIT

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance75

Regular maintenance activity

Popularity17

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~31 days

Recently: every ~15 days

Total

12

Last Release

136d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/61463747?v=4)[JasperKrom](/maintainers/JasperKrom)[@JasperKrom](https://github.com/JasperKrom)

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/rapide-software-sync-stack/health.svg)

```
[![Health](https://phpackages.com/badges/rapide-software-sync-stack/health.svg)](https://phpackages.com/packages/rapide-software-sync-stack)
```

###  Alternatives

[illuminate/queue

The Illuminate Queue package.

21332.6M1.6k](/packages/illuminate-queue)[laravel/ai

The official AI SDK for Laravel.

1.0k3.2M194](/packages/laravel-ai)[mike-bronner/laravel-model-caching

Automatic caching for Eloquent models.

2.4k90.5k1](/packages/mike-bronner-laravel-model-caching)[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[spatie/laravel-health

Monitor the health of a Laravel application

87512.0M165](/packages/spatie-laravel-health)[api-platform/laravel

API Platform support for Laravel

58171.4k14](/packages/api-platform-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
