PHPackages                             gedachtegoed/workspace - 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. gedachtegoed/workspace

ActiveLibrary

gedachtegoed/workspace
======================

Opinionated wrapper around tighten/duster with default configs, Larastan &amp; Prettier blade formatting integration &amp; CI workflows. For internal use.

v0.4(1y ago)59.5k↑46.3%2[1 issues](https://github.com/media-code/workspace/issues)MITPHPPHP ^8.1|^8.2

Since Sep 19Pushed 1y ago1 watchersCompare

[ Source](https://github.com/media-code/workspace)[ Packagist](https://packagist.org/packages/gedachtegoed/workspace)[ GitHub Sponsors](https://github.com/sponsors/gwleuverink)[ RSS](/packages/gedachtegoed-workspace/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (9)Dependencies (12)Versions (16)Used By (0)

Workspace
=========

[](#workspace)

Extendible workspace configurator for Laravel to effortlessly keep linters, fixers, static analysis, CI workflows, editor integrations and more in sync across all your teams &amp; projects

[![codestyle](https://github.com/media-code/workspace/actions/workflows/codestyle.yml/badge.svg)](https://github.com/media-code/workspace/actions/workflows/codestyle.yml)[![tests](https://github.com/media-code/workspace/actions/workflows/tests.yml/badge.svg)](https://github.com/media-code/workspace/actions/workflows/tests.yml)[![coverage](https://camo.githubusercontent.com/fa905c3d971169737928f2358142cbaf8d2aeb22b1a963d3bce3fb92733ce67d/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6d656469612d636f64652f776f726b73706163653f746f6b656e3d4f4e344d54593843314226636f6c6f723d34352532433139302532433635)](https://codecov.io/gh/media-code/workspace)[![coverage](https://camo.githubusercontent.com/b8f5ad9c11da1a391b36ae43b74e17992a24b39ad23580c119d833cb73e88f13/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f6d656469612d636f64652f776f726b73706163652d636f72653f6c6162656c3d636f7265253230636f76657261676526746f6b656e3d4f4e344d54593843314226636f6c6f723d34352532433139302532433635)](https://codecov.io/gh/media-code/workspace-core)

Install Workspace in your project
---------------------------------

[](#install-workspace-in-your-project)

```
composer require gedachtegoed/workspace --dev
```

Then run the install command to set up Workspace's configs in your project:

```
php artisan workspace:install
```

Usage
-----

[](#usage)

Workspace will add a couple of `artisan` commands to your project to help keep Integrations in sync with upstream changes:

```
# Install configured Integrations
php artisan workspace:install

# Updates workspace & Integration dependencies + rebuilds configs
php artisan workspace:update

# Integrates configured Integrations with your editor
php artisan workspace:integrate
```

Workspace ships with opinionated default integrations. These are easy to change &amp; extend, but the recommended way to work with this package is to publish your own [Portable Workspace](#portable-workspaces). This way you have full control of any upstream configuration changes &amp; very customized setups.

The following composer script aliases will be installed by default inside your project:

```
# Linting and fixing
composer lint
composer fix

# Static analysis
composer analyze
composer baseline
```

Note that you can forward options and flags to the underlying composer scripts by suffixing the command with `--`. You may pass any options from either [tighten/duster](https://github.com/tighten/duster) for the `lint` and `fix` commands or [phpstan/phpstan](https://phpstan.org/config-reference) for the `analyze` and `baseline` commands.

For example, if you'd only like to fix dirty files you may use

```
composer lint -- --dirty
```

***NOTE:*** If you don't want Workspace to install composer scripts for you, please remove or edit `Aliases::class` in the package config.

Integrating with your editor
----------------------------

[](#integrating-with-your-editor)

So far we've got composer scripts &amp; CI workflows to run all your linting, fixing &amp; static analysis.

Let's bridge the gap &amp; make sure your IDE seamlessly applies all the same rules.

```
php artisan workspace:integrate
```

You will be prompted to either integrate with `vscode` or `intellij` (like phpstorm).

All default integrations come with publishing of workspace plugins &amp; extensions + workspace specific config. This way we can ensure everyone in your team has the same IDE integration as a baseline, which can be tweaked via the global config.

Keeping rules up-to-date
------------------------

[](#keeping-rules-up-to-date)

Linter, fixer and static analysis rules may change over time. Fortunately it's a breeze to update these locally. Simply run:

```
php artisan workspace:update
```

***NOTE:***Workspace checks if your working directory is clean (has no uncommitted files) before starting the internal update. This way it is easier to review upstream changes to the published files.

Overriding default Integrations
-------------------------------

[](#overriding-default-integrations)

Workspace ships with the following default Integrations:

```
 return [
    EditorDefaults::class,
    PHPCodeSniffer::class,
    PrettierBlade::class,
    PHPCSFixer::class,
    IDEHelper::class,
    Workflows::class,
    Larastan::class,
    Aliases::class,
    TLint::class,
    Pint::class,
];
```

These can be disabled by publishing Workspace's config file

`php artisan vendor:publish --tag=workspace-config`

You can disable any integrations you don't like or extend them with your own implementation. [Check here](https://github.com/media-code/workspace/tree/main/src/Integrations) to see how the default Integrations are implemented for context.

You may add class names your own Integrations inside the config, or you may simply add Integration builders inline

See the snippet below for a usage example using both flavors:

```
use Gedachtegoed\Workspace\Integrations\EditorDefaults\EditorDefaults;
use Gedachtegoed\Workspace\Core\Builder;

use App\Workspace\MyCustomPrettierIntegration;

return [
    // Ships with Workspace. Can be combined with custom Integrations
    EditorDefaults::class,

    // FQCN to your custom Integration
    MyCustomPrettierIntegration::class,

    // Inlined Integration using the Builder directly
    Builder::make()
        // Register composer dependencies
        ->composerRequireDev('laravel/telescope:^4')
        ->composerUpdate('laravel/telescope')

        // Hook into afterInstall to configure Telescope
        ->afterInstall(function (Command $command) {
            $command->call('telescope:install');
            $command->call('artisan migrate');

            // NOTE: You can use Laravel Prompts in here to make anything interactive
        })

];
```

A comprehensive Builder API reference &amp; guide on making your own Integrations is in the works. Check back soon.

Portable Workspaces
-------------------

[](#portable-workspaces)

Workspace ships with opinionated default Integrations setup. We understand your organization or team has very specific needs. That is why it is easy to distribute your own configuration as a package.

We provide a beautiful fluent integration builder API to automate all sorts of tasks, like:

- Installing &amp; updating composer &amp; npm dependencies
- Installing &amp; merging composer script aliases
- Integrating custom linters &amp; fixers with [Duster](https://github.com/tighten/duster)
- Publishing integration config files
- Publishing CI workflow files
- Adding &amp; removing lines from your gitignore files
- Provide plugins/extensions for vscode &amp; phpstorm
- Provide workspace config for vscode &amp; phpstorm

Furthermore Workspace Integrations are fully extendible by use of callable hooks. So you can make the install, update &amp; integrate command do pretty much anything you'd like.

Documentation on using your own Portable Workspaces is pending! Stay tuned!

Roadmap
-------

[](#roadmap)

[Link to roadmap document](https://github.com/media-code/workspace/ROADMAP.md)

###  Health Score

35

—

LowBetter than 80% of packages

Maintenance35

Infrequent updates — may be unmaintained

Popularity30

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 99.6% of commits — single point of failure

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 ~55 days

Recently: every ~106 days

Total

9

Last Release

522d ago

PHP version history (2 changes)v0.1.0PHP ^8.1.0

v0.3PHP ^8.1|^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/9531bf1fdbe178d3a5129b81e61b70be81359ebf10ce3f282705a8275b4bd31d?d=identicon)[gwleuverink](/maintainers/gwleuverink)

---

Top Contributors

[![gwleuverink](https://avatars.githubusercontent.com/u/17123491?v=4)](https://github.com/gwleuverink "gwleuverink (279 commits)")[![Youssef-Azijni](https://avatars.githubusercontent.com/u/54799914?v=4)](https://github.com/Youssef-Azijni "Youssef-Azijni (1 commits)")

---

Tags

fixershacktoberfestlintersphpstormstaticanalysisvscodeworkspace-configurationworkspace-management

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/gedachtegoed-workspace/health.svg)

```
[![Health](https://phpackages.com/badges/gedachtegoed-workspace/health.svg)](https://phpackages.com/packages/gedachtegoed-workspace)
```

###  Alternatives

[fumeapp/modeltyper

Generate TypeScript interfaces from Laravel Models

196277.9k](/packages/fumeapp-modeltyper)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)

PHPackages © 2026

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