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(3mo ago)0323↓50%[1 PRs](https://github.com/rapideinternet/SyncStack/pulls)MITPHPPHP ^8.0.0

Since Mar 7Pushed 3mo 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 1mo ago

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

38

—

LowBetter than 85% of packages

Maintenance82

Actively maintained with recent releases

Popularity16

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

90d 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

[barryvdh/laravel-ide-helper

Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.

14.9k123.0M687](/packages/barryvdh-laravel-ide-helper)[illuminate/queue

The Illuminate Queue package.

20331.4M1.2k](/packages/illuminate-queue)[fumeapp/modeltyper

Generate TypeScript interfaces from Laravel Models

196277.9k](/packages/fumeapp-modeltyper)[orchestra/canvas

Code Generators for Laravel Applications and Packages

20917.2M158](/packages/orchestra-canvas)[clickbar/laravel-magellan

This package provides functionality for working with the postgis extension in Laravel.

423715.4k1](/packages/clickbar-laravel-magellan)[prwnr/laravel-streamer

Events streaming package for Laravel that uses Redis 5 streams

110196.9k1](/packages/prwnr-laravel-streamer)

PHPackages © 2026

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