PHPackages                             orbiter/satellite-app - 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. orbiter/satellite-app

ActiveProject[Framework](/categories/framework)

orbiter/satellite-app
=====================

Easy to use Event &amp; Middleware Mini-Framework, powered by popular projects and PSR's

0.4.2(3y ago)2281[2 PRs](https://github.com/bemit/satellite-app/pulls)MITPHPPHP &gt;=8.1

Since Nov 21Pushed 3y ago1 watchersCompare

[ Source](https://github.com/bemit/satellite-app)[ Packagist](https://packagist.org/packages/orbiter/satellite-app)[ RSS](/packages/orbiter-satellite-app/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (24)Versions (10)Used By (0)

Orbiter\\Satellite
==================

[](#orbitersatellite)

```

                       🌐
                     🛰️
                   ·
                ·
     🛰️🛰️️   ·
    🛰️🌐🛰️   ·  ·  · 🛰️🌐
     🛰️🛰️️

```

Easy to use Event &amp; Middleware Framework, powered by popular micro-libraries and based on [PSRs](https://www.php-fig.org/psr/).

- [Setup](#setup)
    - [Config](#config)
- [Implemented PSRs](#psrs)
- [Packages](#packages)
- [Download Build](#download-build)
- [License](#license)

Supports PHP 8.1+ and [composer](https://getcomposer.org/)

TL;DR
-----

[](#tldr)

Quick-Jump into develop:

```
composer create-project orbiter/satellite-app ./satellite

cd ./satellite

# create `.env` file,
# add for local-dev: `env=local`
touch .env

# start PHP Dev Server
cd web && php -S localhost:3333 ./index.php display_errors=0

# or point the Apache Root to `/web/`
# or point the NGINX entry to `/web/index.php`
# or use Docker: `docker-compose up`
```

Open your browser on:

Look into files:

- [`config`](./config) folder with [app config and wiring](#config)
- [`assemble.php`](./assemble.php) composer autoload, gathers configurations and creates the system modules from that config
- [`launch.php`](./launch.php) runs `assemble()` and dispatches the `SatelliteApp` event
- [`app`](./app) folder with a basic commands and route handler structure

Setup
-----

[](#setup)

Install app skeleton and dependencies with composer in folder `satellite`:

```
# with composer installed on machine:
composer create-project orbiter/satellite-app satellite

# with composer and docker on windows:
docker run -it --rm -v %cd%/satellite:/app composer create-project orbiter/satellite-app .
docker run -it --rm -v %cd%/satellite:/app composer create-project --stability=dev orbiter/satellite-app:dev-master .

# with composer and docker on unix:
docker run -it --rm -v `pwd`/satellite:/app composer create-project orbiter/satellite-app .
docker run -it --rm -v `pwd`/satellite:/app composer create-project --stability=dev orbiter/satellite-app:dev-master .

# go into project folder:
cd ./satellite
```

Run with:

- [Linux, PHP Dev Server](#linux-php-dev-server)
- [PHP Command-Line](#php-command-line)
- [Docker, docker-compose](#docker-docker-compose)
- [Web-Server](#web-server)

### Linux, PHP Dev Server

[](#linux-php-dev-server)

Setup correct user rights, then start and open

```
chmod +x start.sh

./start.sh
```

### PHP Command-Line

[](#php-command-line)

Execute defined commands.

```
php cli
```

### Docker, docker-compose

[](#docker-docker-compose)

Includes configurable PHP Dockerfile with:

- PHP 8.1
    - with FPM and a few extensions
    - reusing FPM for a clean CLI worker image
- OPCache
- PostgreSQL Client libs (using `pdo`)
- NGINX base image for local routing
- customize in [Dockerfile](Dockerfile)
- a more "production" ready image, preconfigured for building [in CI](.github/workflows/blank.yml) with [docker-compose--prod.yml](docker-compose--prod.yml)

For docker image configs see files in [`_docker`](./_docker) and [`_nginx`](./_nginx).

Start containers specified in [`docker-compose.yml`](./docker-compose.yml), then open:

```
docker-compose up

# open shell in app container
docker-compose exec app sh

# run command in temporary worker container
docker-compose run --rm worker php cli demo

# run extra composer container on windows:
docker run -it --rm -v %cd%:/app composer dumpautoload
# run extra composer container on unix:
docker run -it --rm -v `pwd`:/app composer dumpautoload

# run tests with temporary `app` container:
docker-compose run -T --rm app sh -c "cd /var/www/html && ./vendor/bin/phpunit --testdox tests"

# running tests with a temporary `phpunit` in a prebuild container:
docker run -i --rm bemiteu/satellite-app:master sh -c "cd /var/www && wget -O phpunit https://phar.phpunit.de/phpunit-9.phar && chmod +x phpunit && cd html && /var/www/phpunit --testdox tests"
```

### Web-Server

[](#web-server)

On a web-server the `web/index.php` file serves as public entry point.

**Apache:** point server/vhost root to `/web` and use the included `.htaccess`

**NGINX**: example files in [\_nginx](./_nginx).

Config
------

[](#config)

Use e.g. `.env` to add configuration.

Default's config includes:

- env var `env`: if in production or not in production
    - with value `prod` it is assumed in the App (not the framework) that it is in production
    - use `$_ENV['env'] === 'prod'` to check for production
    - for dev-error pages: add var `dev.editor` with one value of `PrettyPageHandler::EDITOR_*` to link `whoops` "open file" with IDE
- `/config/config.php` - main config
    - configures which other config files are included
    - aggregates and caches the config for production usage
- `/config/dependencies.php` - definitions for PHP-DI
- `/config/events.php` - define app components flow
- `/config/pipeline.php` - setup PSR middlewares and pipeline

PSRs
----

[](#psrs)

This app serves as mini-framework, with PSR powered libraries, ready-to-use Annotations and not much more.

It is build upon [PSRs](https://www.php-fig.org/psr/) and popular, specialized packages implementing them or other great stuff.

- **PSR-3** - Logger
    - 📦 `monolog/monolog`
    - [more implementations](https://packagist.org/providers/psr/log-implementation)
- **PSR-4** - autoload classes and forget `require_once`
    - handled by composer, more in [composer docs.](https://getcomposer.org/doc/01-basic-usage.md#autoloading)
- **PSR-1,12** - Code Style Guides
    - except brackets location rule: same-line instead of next-line for opening `{`
- **PSR-6** - Cache
    - 📦 `cache/filesystem-adapter`
    - includes [`FilesystemCachePoolNormalized`](./app/Lib/FilesystemCachePoolNormalized.php) for `Doctrine\Common\Annotations\PsrCachedReader` compatibility
    - [more implementations](https://packagist.org/providers/psr/cache-implementation)
- **PSR-7** - HTTP Message
    - 📦 `nyholm\psr7`
    - request and response data definitions
    - used further by `PSR-15`, `PSR-17` and `PSR-18`
- **PSR-11** - Container for InterOp
    - 📦 `php-di/php-di`
    - service container for ease and modularity
    - dependency injection with `@Annotations`, `@var` PHPDoc and Reflection support
- **PSR-14** - Event Dispatcher and Listener
    - 📦 `orbiter/satellite`
    - as the core of how things are put together
- **PSR-15** - HTTP Handlers
    - 📦 `orbiter/satellite-response`
    - handle route requests with a powerful middleware pipeline
- **PSR-16** - Simple Cache
    - 📦 `cache/filesystem-adapter`
    - [more implementations](https://packagist.org/providers/psr/simple-cache-implementation)
- **PSR-17** - HTTP Factories
    - 📦 `nyholm\psr7`
    - context about request
    - for request &amp; response initiations
- **PSR-18** - HTTP Client
    - 📦 `guzzlehttp/guzzle`
    - send requests to other APIs
    - [more implementations](https://packagist.org/providers/psr/http-client-implementation)

> 📦 = included in `satellite-app` template

Packages
--------

[](#packages)

- `orbiter/satellite` [![Latest Stable Version](https://camo.githubusercontent.com/add2cd7a013c33bc2739336daf759a8fb034d87b940d2eeecdd32993b80725fb/68747470733a2f2f706f7365722e707567782e6f72672f6f7262697465722f736174656c6c6974652f76657273696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orbiter/satellite)
    - implements **PSR-14** Event Dispatcher and Listener
    - with invoker to execute anything, **PSR-11** compatible
    - optional event-handler based profiling
    - see [package repository](https://github.com/bemit/satellite)
- `orbiter/satellite-console` [![Latest Stable Version](https://camo.githubusercontent.com/8f07edb7b2de80c9703c3ade8b74465ee047de2a30d51bb519a21155a206d6e1/68747470733a2f2f706f7365722e707567782e6f72672f6f7262697465722f736174656c6c6974652d636f6e736f6c652f76657273696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orbiter/satellite-console)
    - console execution
    - console command annotations
    - uses [getopt-php](https://github.com/getopt-php/getopt-php)
    - see [package repository](https://github.com/bemit/satellite-console)
- `orbiter/satellite-response` [![Latest Stable Version](https://camo.githubusercontent.com/49f955273d1531b42d74bed1f1151a31ca5cb23cdd7171f51d7abb755485116e/68747470733a2f2f706f7365722e707567782e6f72672f6f7262697465722f736174656c6c6974652d726573706f6e73652f76657273696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orbiter/satellite-response)
    - middleware pipe execution
    - implements **PSR-15** through `equip/dispatch`, **PSR-11** compliant
    - implements **PSR-7,17** through `nyholm/psr7` and `nyholm/psr7-server`
    - with simple emitter by `narrowspark/http-emitter`
    - see [package repository](https://github.com/bemit/satellite-response)
- `orbiter/satellite-route` [![Latest Stable Version](https://camo.githubusercontent.com/062ae8c5bc190a01872c8ea15af7d64b9958a8fa6e88098d0dcf637700b6f2a8/68747470733a2f2f706f7365722e707567782e6f72672f6f7262697465722f736174656c6c6974652d726f7574652f76657273696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orbiter/satellite-route)
    - routes by annotations
    - uses [nikic/fast-route](https://github.com/nikic/FastRoute) as router
    - made for PSR middleware usage, but not limited
    - see [package repository](https://github.com/bemit/satellite-route)
- `orbiter/annotations-util` [![Latest Stable Version](https://camo.githubusercontent.com/c47413ad1e2046ae7057be3b4898fb3b9053f63ef2852a3581caa5bb124022df/68747470733a2f2f706f7365722e707567782e6f72672f6f7262697465722f616e6e6f746174696f6e732d7574696c2f76657273696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orbiter/annotations-util)
    - annotations by `doctrine/annotations` with cached reflections
    - get classes, methods and properties which are annotated
    - see [AnnotationsUtil](https://github.com/bemit/orbiter-annotations-util)
- `orbiter/satellite-whoops` [![Latest Stable Version](https://camo.githubusercontent.com/8cd80fb0d6b697a8d054cb5d18c73cb519440c56bbb8993df3d56a3795b9492a/68747470733a2f2f706f7365722e707567782e6f72672f6f7262697465722f736174656c6c6974652d77686f6f70732f76657273696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orbiter/satellite-whoops)
    - Whoops error display for CLI and Routes
    - only when `$_ENV['env']` not `prod` (configurable in [`assemble.php`](./assemble.php))
- `orbiter/satellite-config` [![Latest Stable Version](https://camo.githubusercontent.com/602440515218b9400d8ee6bb7a9cd7c56829493a2798803a819895cedd669485/68747470733a2f2f706f7365722e707567782e6f72672f6f7262697465722f736174656c6c6974652d636f6e6669672f76657273696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orbiter/satellite-config)
    - simple config aggregator with caching
    - see [package repository](https://github.com/bemit/satellite-config)
- `orbiter/satellite-launch` [![Latest Stable Version](https://camo.githubusercontent.com/b5e2f0479f3de3fb55947ca89f79c98c7b0b74c7b1009d29954125d2dfbe573e/68747470733a2f2f706f7365722e707567782e6f72672f6f7262697465722f736174656c6c6974652d6c61756e63682f76657273696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orbiter/satellite-launch)
    - `SatelliteApp` event data objects
    - see [package repository](https://github.com/bemit/satellite-launch)
- `orbiter/satellite-system` [![Latest Stable Version](https://camo.githubusercontent.com/63cc2833d6a126c2cb891478dc6234b02fb00c47b2f3cffd33b601ec3db08a81/68747470733a2f2f706f7365722e707567782e6f72672f6f7262697465722f736174656c6c6974652d73797374656d2f76657273696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/orbiter/satellite-system)
    - system setup and core wire-up, e.g. from `$config` to a cached PSR container
    - see [package repository](https://github.com/bemit/satellite-system)

A lot of work for APIs is done by PSR-15 HTTP Middleware, find more [awesome middlewares](https://github.com/middlewares/awesome-psr15-middlewares).

Download Build
--------------

[](#download-build)

There is no downloadable version - see [Setup](#setup) on how to install with composer.

We use composer as package manager, like in any modern PHP project.

Feel free to reach out for a [training request](https://bemit.codes).

License
-------

[](#license)

This project is free software distributed under the [**MIT License**](LICENSE).

### Contributors

[](#contributors)

By committing your code to the code repository you agree to release the code under the MIT License attached to the repository.

---

Maintained by [Michael Becker](https://i-am-digital.eu)

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity62

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

Recently: every ~130 days

Total

7

Last Release

1296d ago

PHP version history (4 changes)0.0.1PHP &gt;=7.3

0.1.0PHP &gt;=7.4

0.2.0PHP &gt;=7.4.1||&gt;=8

0.4.0PHP &gt;=8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/946489901a36f4507ead2ce24d3e9c6570ae4e16ab1aed0ef6314237302ecb37?d=identicon)[bemit](/maintainers/bemit)

---

Top Contributors

[![elbakerino](https://avatars.githubusercontent.com/u/7737034?v=4)](https://github.com/elbakerino "elbakerino (37 commits)")

---

Tags

middleware-frameworkphpphp-framework

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/orbiter-satellite-app/health.svg)

```
[![Health](https://phpackages.com/badges/orbiter-satellite-app/health.svg)](https://phpackages.com/packages/orbiter-satellite-app)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.6k509.9M17.0k](/packages/laravel-framework)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[ec-cube/ec-cube

EC-CUBE EC open platform.

78527.0k1](/packages/ec-cube-ec-cube)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[neos/flow

Flow Application Framework

862.0M451](/packages/neos-flow)[tempest/framework

The PHP framework that gets out of your way.

2.1k23.1k9](/packages/tempest-framework)

PHPackages © 2026

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