PHPackages                             maduser/argon-skeleton - 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. maduser/argon-skeleton

ActiveProject[Framework](/categories/framework)

maduser/argon-skeleton
======================

Minimal application skeleton for the Argon runtime stack.

v1.0.1(2mo ago)09MITPHPPHP ^8.2CI passing

Since May 25Pushed 2mo agoCompare

[ Source](https://github.com/judus/argon-skeleton)[ Packagist](https://packagist.org/packages/maduser/argon-skeleton)[ RSS](/packages/maduser-argon-skeleton/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (13)Versions (3)Used By (0)

Argon Skeleton
==============

[](#argon-skeleton)

[![PHP](https://camo.githubusercontent.com/ce3e396e4f1bbbd326f628872a1414656d28065f2712cda0868d8eff07320aec/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d382e322b2d626c7565)](https://www.php.net/)[![Build](https://github.com/judus/argon-skeleton/actions/workflows/php.yml/badge.svg?branch=main)](https://github.com/judus/argon-skeleton/actions)[![codecov](https://camo.githubusercontent.com/a858b3aa0084915e104e3174fce417baa74c80c77ef32715465697ab036665bd/68747470733a2f2f636f6465636f762e696f2f67682f6a756475732f6172676f6e2d736b656c65746f6e2f6272616e63682f6d61696e2f67726170682f62616467652e737667)](https://codecov.io/gh/judus/argon-skeleton)[![Psalm Level](https://camo.githubusercontent.com/c5129abbd798467fdf35f2c23b7a0e1e3449e05b391376f773f28386b6554c74/68747470733a2f2f73686570686572642e6465762f6769746875622f6a756475732f6172676f6e2d736b656c65746f6e2f636f7665726167652e737667)](https://shepherd.dev/github/judus/argon-skeleton)[![Latest Version](https://camo.githubusercontent.com/3472d13111fe4f86bd8a41e1447a48d7d7d9e584b2d42ba7d115f5005288d956/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6164757365722f6172676f6e2d736b656c65746f6e2e737667)](https://packagist.org/packages/maduser/argon-skeleton)[![Total Downloads](https://camo.githubusercontent.com/33f97cd3a3a2739d7df3404f46bb7a71af90abe47282ffe6816d61324803925c/68747470733a2f2f706f7365722e707567782e6f72672f6d6164757365722f6172676f6e2d736b656c65746f6e2f646f776e6c6f616473)](https://packagist.org/packages/maduser/argon-skeleton)[![License: MIT](https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667)](https://opensource.org/licenses/MIT)

Minimal application skeleton for the Argon runtime stack.

This is a `composer create-project` starting point. Framework/runtime behavior lives in the `maduser/argon-*` packages; this repository contains the default application layout and wiring.

Create Project
--------------

[](#create-project)

```
composer create-project maduser/argon-skeleton my-app
cd my-app
cp .env.example .env
composer install
```

Commands
--------

[](#commands)

```
composer serve
composer console
composer test
composer check
```

`composer serve` runs PHP's built-in server through `server.php`. It is a local development command, not a production runtime.

Quality Gates
-------------

[](#quality-gates)

```
composer validate --strict
composer check
composer test:coverage
composer psalm
composer phpcs
```

`composer check` runs syntax checks, PHPUnit, Psalm level 1, and PHPCS/Slevomat.

Layout
------

[](#layout)

- `public/index.php` selects the HTTP runtime.
- `bin/console` selects the console runtime.
- `server.php` adapts PHP's built-in server to `public/index.php`.
- `foundation/` contains the default application wiring.
- `src/` is intentionally empty for application code.
- `storage/cache/` is available for writable application cache files.
- `tests/Skeleton/` contains starter contract tests for the shipped skeleton.
- `tests/Feature/` and `tests/Unit/` are reserved for application tests.

Providers
---------

[](#providers)

Runtime entrypoints register one foundation provider:

```
Argon::prophecy(static function (ArgonContainer $container): void {
    $container->register(HttpFoundationServiceProvider::class);
});
```

HTTP provider order:

1. `ConfigServiceProvider`
2. HTTP runtime parameter setup
3. `LoggingServiceProvider`
4. `ErrorHandlingServiceProvider`
5. `HttpMessageServiceProvider`
6. `MiddlewarePipelineServiceProvider`
7. `RouteServiceProvider`
8. `HttpKernelServiceProvider`
9. `AppServiceProvider`
10. `MiddlewareServiceProvider`
11. `AppRoutingServiceProvider`

Console provider order:

1. `ConfigServiceProvider`
2. Console runtime parameter setup
3. `LoggingServiceProvider`
4. `ConsoleServiceProvider`
5. `AppServiceProvider`
6. `ConsoleCommandServiceProvider`

Application Hooks
-----------------

[](#application-hooks)

- Register services in `foundation/Providers/AppServiceProvider.php`.
- Register HTTP middleware in `foundation/Providers/MiddlewareServiceProvider.php`.
- Register routes in `foundation/Providers/AppRoutingServiceProvider.php`.
- Register console commands in `foundation/Providers/ConsoleCommandServiceProvider.php`.
- Adjust environment-derived parameters in `foundation/Providers/ConfigServiceProvider.php`.
- Adjust exception reporting/rendering in `foundation/Exceptions/AppExceptionPolicy.php`.

The starter application ships only the `/` route.

Middleware
----------

[](#middleware)

The skeleton ships one default HTTP middleware:

- `SecurityHeadersMiddleware`

It adds:

- `X-Frame-Options: SAMEORIGIN`
- `X-Content-Type-Options: nosniff`
- `Referrer-Policy: strict-origin-when-cross-origin`

It is registered in `MiddlewareServiceProvider` under the `web` group. Remove or replace it there if the application needs different headers.

The skeleton does not ship body parsing, sessions, CSRF, CORS, auth, rate limiting, request logging, trusted proxy handling, or response formatting middleware. Add those explicitly when the application needs them.

Configuration
-------------

[](#configuration)

`.env` is loaded by `ConfigServiceProvider`.

Supported defaults:

- `APP_NAME`
- `APP_ENV`
- `APP_DEBUG`
- `APP_VERSION`

The provider writes typed parameters into the container parameter store:

- `app.name`
- `app.env`
- `app.debug`
- `app.version`

HTTP adds `kernel.shouldExit`. Console adds `console.name` and `console.version`.

Tests
-----

[](#tests)

The shipped tests under `tests/Skeleton/` verify the skeleton contract:

- container parameters
- HTTP dispatch
- root route
- middleware execution
- exception handling
- console registration

Add application tests under:

- `tests/Feature/`
- `tests/Unit/`

Optional Packages
-----------------

[](#optional-packages)

The skeleton only installs the core HTTP/CLI runtime. Optional integrations are installed manually and registered explicitly from `AppServiceProvider` or a dedicated application provider.

```
composer require maduser/argon-monolog
composer require maduser/argon-whoops
composer require maduser/argon-twig
composer require maduser/argon-eloquent
composer require maduser/argon-doctrine
composer require maduser/argon-phinx
composer require maduser/argon-filesystem
composer require maduser/argon-workflows
```

Available integration packages:

- `maduser/argon-monolog`: PSR-3 logging through Monolog.
- `maduser/argon-whoops`: local/debug exception rendering through Whoops.
- `maduser/argon-twig`: Twig environment and template path registration.
- `maduser/argon-eloquent`: Eloquent database manager and connection setup.
- `maduser/argon-doctrine`: Doctrine ORM entity manager setup.
- `maduser/argon-phinx`: Phinx migration commands for Argon Console.
- `maduser/argon-filesystem`: named Flysystem disks and default filesystem binding.
- `maduser/argon-workflows`: state-handler workflow runner for explicit application processes.

Provider registration stays explicit:

```
final class AppServiceProvider extends AbstractServiceProvider
{
    #[\Override]
    public function register(ArgonContainer $container): void
    {
        $container->register([
            MonologServiceProvider::class,
            TwigServiceProvider::class,
            FilesystemServiceProvider::class,

            // Application-owned configuration for the integrations above.
            LoggingServiceProvider::class,
            TemplateServiceProvider::class,
            StorageServiceProvider::class,
        ]);
    }
}
```

Some packages require additional app-owned setup. For example, Twig needs template paths, database packages need connections or mappings, Phinx needs migration paths and environments, and filesystem disks need adapter instances. Install third-party adapter packages directly when needed; the skeleton does not auto-install optional dependencies or discover providers.

Boundaries
----------

[](#boundaries)

This skeleton intentionally does not provide:

- Docker or deployment/runtime infrastructure
- cache, mail, queue, session, auth, or rate-limiting services
- database, migration, filesystem, template, or ORM wiring by default
- workflow wiring by default
- route/config/provider file indirection
- automatic package discovery

Install optional integrations manually and wire them through explicit service providers. The skeleton remains the minimal application starting point.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance88

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

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

Every ~0 days

Total

2

Last Release

60d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7fb9da5a15010d335622bf9f465a32ef79c8d1cffcd139c2a9114736b72e2c13?d=identicon)[jdu](/maintainers/jdu)

---

Top Contributors

[![judus](https://avatars.githubusercontent.com/u/1478654?v=4)](https://github.com/judus "judus (20 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Code StylePHP\_CodeSniffer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/maduser-argon-skeleton/health.svg)

```
[![Health](https://phpackages.com/badges/maduser-argon-skeleton/health.svg)](https://phpackages.com/packages/maduser-argon-skeleton)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k543.8M20.5k](/packages/laravel-framework)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k16](/packages/tempest-framework)[lion/bundle

Lion-framework configuration and initialization package

122.4k4](/packages/lion-bundle)[doppar/framework

The Doppar Framework

4112.4k14](/packages/doppar-framework)

PHPackages © 2026

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