PHPackages                             cauriland/foundation - 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. [Framework](/categories/framework)
4. /
5. cauriland/foundation

ActiveLibrary[Framework](/categories/framework)

cauriland/foundation
====================

User-Interface Scaffolding for Laravel. Powered by TailwindCSS.

5.5.0(4y ago)014MITPHPPHP ^8.0

Since Apr 24Pushed 4y ago1 watchersCompare

[ Source](https://github.com/cauriland/laravel-foundation)[ Packagist](https://packagist.org/packages/cauriland/foundation)[ RSS](/packages/cauriland-foundation/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (55)Versions (13)Used By (0)

Laravel Foundation
==================

[](#laravel-foundation)

 [![](https://github.com/cauriland/laravel-foundation/raw/main/banner.png)](https://github.com/cauriland/laravel-foundation/raw/main/banner.png)

> Scaffolding for Laravel. Powered by TailwindCSS and Livewire.

[List of the available components](https://github.com/cauriland/laravel-foundation/usage/ui.md#available-components)

Prerequisites
-------------

[](#prerequisites)

Since this package relies on a few 3rd party packages, you will need to have the following installed and configured in your project:

- [Alpinejs](https://github.com/alpinejs/alpine)
- [TailwindCSS](https://tailwindcss.com/)
- [TailwindUI](https://tailwindui.com/)
- [Livewire](https://laravel-livewire.com/)

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

[](#installation)

Require with composer: `composer require cauriland/foundation`

Usage
-----

[](#usage)

- [CommonMark](/usage/commonmark.md)
- [Documentation](/usage/documentation.md)
- [Fortify](/usage/fortify.md)
- [Hermes](/usage/hermes.md)
- [Stan](/usage/stan.md)
- [UI](/usage/ui.md)

Examples
--------

[](#examples)

- [CommonMark](/examples/commonmark.md)
- [Fortify](/examples/fortify.md)
- [Hermes](/examples/hermes.md)
- [UI](/examples/ui.md)

Composer Scripts
----------------

[](#composer-scripts)

Add those scripts to `composer.json`

```
"scripts": [
    "analyse": [
        "vendor/bin/phpstan analyse --configuration=vendor/cauriland/foundation/phpstan.neon --memory-limit=2G"
    ],
    "format": [
        "vendor/bin/php-cs-fixer fix --config=vendor/cauriland/foundation/.php-cs-fixer.php"
    ],
    "refactor": [
        "./vendor/bin/rector process --config=vendor/cauriland/foundation/rector.php"
    ],
    "test": [
        "./vendor/bin/pest"
    ],
    "test:fast": [
        "./vendor/bin/pest --parallel"
    ],
    "test:coverage": [
        "./vendor/bin/pest --coverage --min=100 --coverage-html=.coverage --coverage-clover=coverage.xml"
    ]
],
```

Working on Components Locally
-----------------------------

[](#working-on-components-locally)

This package contains a lot of frontend components, but no frontend views itself. So when you need to work on it, you rely on the frontend from another project. Usually this can be done by having composer symlink this package, but in this case there is a second step required to ensure you can run `yarn watch`, `yarn prod` etc.

I'll get into it in detail and will use the marketsquare.io project as an example. Let's assume that both the marketsquare.io and laravel-foundation git repo's are installed in the `/Users/my-user/projects/` folder on our local development machine.

### Step 1 - Composer Symlink

[](#step-1---composer-symlink)

In the `composer.json` file from marketsquare.io under "repositories" add the laravel-foundation as a path:

```
"repositories": [
    {
        "type": "path",
        "url": "../laravel-foundation"
    }
]
```

After that run `composer require cauriland/foundation --ignore-platform-reqs -W`. The laravel-foundation package is now symlinked and you can work in your IDE from within your `laravel-foundation` repo.

### Step 2 - Symlink node\_modules

[](#step-2---symlink-node_modules)

If you would run `yarn watch` from within your marketsquare.io repo you'll get a lot of errors because dependencies are not smart enough to know they're in a symlinked directory.

- Delete the `node_modules` directory on `laravel-foundation`.
- Symlink the `node_modules` directory from marketsquare.io to laravel-foundation by running `ln -s /Users/my-user/projects/marketsquare.io/node_modules node_modules` (from within your laravel-foundation repo).

Now, when you go back to your marketsquare.io repo, you can run `yarn watch`.

Don't forget to remove the symlinking after you're done.

### Turn those steps into scripts

[](#turn-those-steps-into-scripts)

> ***Keep in mind***:
>
> these scripts are written for Mac users. If you use another OS you may need to tweak them accordingly.
>
> `unlink:foundation` uses `git` commands to restore the current project.

To improve your workflow you can turn those steps into scripts and use them directly in your command line, like:

```
$ link:foundation
$ unlink:foundation
```

You can copy/paste them in your `.bashrc`, `.aliases` or whatever file you set up to manage your aliases.

Before jumping into the code, let me explain what you can do with them ([skip to code](/#code)).

For these examples we use `marketsquare.io` and `laravel-foundation` repos, assuming that both are installed in the same folder (`/Users/my-user/projects`) on our local development machine.

#### symlink your current project to laravel-foundation

[](#symlink-your-current-project-to-laravel-foundation)

```
# move into marketsquare.io folder
$ cd /Users/my-user/projects/marketsquare.io

# symlink to laravel-foundation repo
$ link:foundation
```

That's it!

The script automatically tries to guess where the `laravel-foundation` repo is located and symlinks the current project to it (in this case `marketsquare.io`).

If the current project and `laravel-foundation` repos are not in the same folder, the script tries to move one level back (`../../`) and tries again. If `laravel-foundation` is not found, the script exits and outputs an error message.

You can always specify a custom path, by passing it as an argument

```
$ link:foundation 'Users/john/repos/laravel-foundation'
```

#### remove symlink from your current project

[](#remove-symlink-from-your-current-project)

```
# move into marketsquare.io folder
$ cd /Users/my-user/projects/marketsquare.io

# remove symlink
$ unlink:foundation
```

Again, that's it!

The script looks for `.symlink_foundation` temp file (created by `link:foundation`), that contains the symlinked path. If not found, it tries to guess where the `laravel-foundation` repo is located and removes the symlink from the current project (in this case `marketsquare.io`).

If the current project and `laravel-foundation` repos are not in the same folder, the script tries to move one level back (`../../`) and tries again. If `laravel-foundation` is not found, the script exits and outputs an error message.

You can always specify a custom path, by passing it as an argument

```
$ unlink:foundation 'Users/john/repos/laravel-foundation'
```

#### code

[](#code)

Scripts are self-explanatory, plus they have comments on each line 😉.

```
function link:foundation() {

    # Check if already symlinked
    [ -f .symlink_foundation ] && { echo "already symlinked"; return; }

    # Get path from args or guess it
    if [ "$1" != "" ]; then
        FOUNDATION="$1"
    elif [ -d ../laravel-foundation ]; then
        FOUNDATION="../laravel-foundation"
    elif [ -d ../../laravel-foundation ]; then
        FOUNDATION="../../laravel-foundation"
    else
        echo "Unable to find `laravel-foundation`"
        return
    fi

    # Generate random string
    RANDOM_STRING=$(base64 /dev/urandom | tr -d '/+' | dd bs=6 count=1 2>/dev/null)

    # Set Composer repo
    composer config repositories.${RANDOM_STRING} '{"type": "path", "url": "'${FOUNDATION}'"}'

    # Require cauriland/foundation
    composer require cauriland/foundation --ignore-platform-reqs -W

    # Remove node_modules folder
    rm -rf ${FOUNDATION}/node_modules

    # Symlink to cauriland/foundation node_modules folder
    ln -s $(pwd)/node_modules ${FOUNDATION}/node_modules

    # Create .symlink_foundation temp file
    echo ${FOUNDATION} >> .symlink_foundation

    # Inform user that all went ok
    echo "${FOUNDATION} has been symlinked"
}

function unlink:foundation() {

    # Get path from .symlink_foundation file or from args or guess it
    if [ -f .symlink_foundation ]; then
        FOUNDATION=$(cat .symlink_foundation)
    elif [ "$1" != "" ]; then
        FOUNDATION="$1"
    elif [ -d ../laravel-foundation ]; then
        FOUNDATION="../laravel-foundation"
    elif [ -d ../../laravel-foundation ]; then
        FOUNDATION="../../laravel-foundation"
    else
        echo "Unable to find `laravel-foundation`"
        return
    fi

    # Remove symlink
    unlink ${FOUNDATION}/node_modules

    # Remove temp file
    rm -rf .symlink_foundation

    # Clean up repo
    git reset --hard
    git clean -df

    # Inform user that all went ok
    echo "${FOUNDATION} symlink has been removed"
}
```

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity61

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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 ~1 days

Total

12

Last Release

1522d ago

Major Versions

3.4.2 → 4.0.12022-05-03

4.4.0 → 5.0.32022-05-03

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/12436411?v=4)[Tindo Arsel](/maintainers/tnga)[@tnga](https://github.com/tnga)

---

Top Contributors

[![tnga](https://avatars.githubusercontent.com/u/12436411?v=4)](https://github.com/tnga "tnga (31 commits)")

### Embed Badge

![Health badge](/badges/cauriland-foundation/health.svg)

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

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

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

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k15.1M131](/packages/laravel-pulse)[flarum/core

Delightfully simple forum software.

201.4M2.3k](/packages/flarum-core)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[tallstackui/tallstackui

TallStackUI is a powerful suite of Blade components that elevate your workflow of Livewire applications.

725172.4k14](/packages/tallstackui-tallstackui)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5021.9k](/packages/simplestats-io-laravel-client)

PHPackages © 2026

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