PHPackages                             robertkleinschuster/compass - 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. robertkleinschuster/compass

ActiveLibrary

robertkleinschuster/compass
===========================

A Component Router for PHP

v0.0.1(1y ago)1741MITPHPPHP ^8.3

Since Feb 27Pushed 1y ago1 watchersCompare

[ Source](https://github.com/robertkleinschuster/compass)[ Packagist](https://packagist.org/packages/robertkleinschuster/compass)[ RSS](/packages/robertkleinschuster-compass/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (3)Versions (2)Used By (1)

Compass
=======

[](#compass)

**Effortless Routing for PHP Applications**

Used in [robertkleinschuster/zenith](https://github.com/robertkleinschuster/zenith)

Compass is a routing solution for PHP, inspired by the simplicity and power of NEXT.js routing. It's engineered to enhance PHP applications by allowing developers to define routes through a straightforward directory and file structure, offering an intuitive approach to building dynamic web applications.

Elevating PHP Routing
---------------------

[](#elevating-php-routing)

Compass transforms traditional PHP routing, providing a structured yet flexible way to map URLs to your application's content. By using simple `page.php`, `layout.php` and `action.php` files within a designated directory structure, developers can easily align URL paths with specific PHP files, streamlining the routing process and enhancing maintainability.

Quickstart
----------

[](#quickstart)

### Installation

[](#installation)

Initiate your journey with Compass by integrating it into your PHP project through Composer:

```
composer require robertkleinschuster/compass
```

### Crafting Your Routes

[](#crafting-your-routes)

Organize your application's endpoints using a `routes` directory. Place `page.php` files to denote your routes and `layout.php` for layouts. These files should return a value that is renderable by the [robertkleinschuster/mosaic](https://github.com/robertkleinschuster/mosaic) renderer.

#### Structuring Your Directory

[](#structuring-your-directory)

```
/routes
    /home
        page.php        # Maps to /home
    /about
        page.php        # Maps to /about
    /products
        page.php        # Maps to /products
        layout.php      # Layout for product overview and details view
        /details
            page.php    # Maps to /products/details
    /layout.php         # Shared layout for your routes

```

### Defining Content

[](#defining-content)

Each `page.php`, `layout.php`, or `action.php` file must return a value that is renderable by the mosaic renderer. This ensures seamless integration and consistency across your application's user interface.

### Parameters for Pages, Layouts, and Actions

[](#parameters-for-pages-layouts-and-actions)

When a route is accessed, the corresponding `page.php`, `layout.php`, or `action.php` file is invoked with specific parameters:

- **For `page.php`**: The function receives `array $params` for route parameters and `array $queryParams` for query string values. It is also passed the current `Route $route` object.
- **For `layout.php`**: In addition to all parameters of page.php this function is passed `mixed $children`, which represents the content nested within the layout. An important distinction for the `Route $route` object passed to layouts is that it is not the currently matched but rather the object of the level the layout.php is placed in.
- **For `action.php`**: The function receives `array $params` and `array $queryParams`, similar to `page.php`, to handle specific actions based on the request. Additionally, it receives `array $parsedBody`.

### License

[](#license)

Compass is distributed under the MIT License. See LICENSE for more information.

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance44

Moderate activity, may be stable

Popularity11

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 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

Unknown

Total

1

Last Release

436d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/43c5aeaeb453ce57f8f4a9b4e57d788259527a9725b48d12a541fbb4ef5b7848?d=identicon)[robertkleinschuster](/maintainers/robertkleinschuster)

---

Top Contributors

[![robertkleinschuster](https://avatars.githubusercontent.com/u/64379246?v=4)](https://github.com/robertkleinschuster "robertkleinschuster (5 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/robertkleinschuster-compass/health.svg)

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

PHPackages © 2026

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