PHPackages                             earc/minimal - 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. earc/minimal

ActiveProject[Framework](/categories/framework)

earc/minimal
============

eArc - the explicit architecture framework - minimal installation skeleton

0.1-rc(7y ago)012MITPHPPHP ^7.2

Since Aug 11Pushed 7y agoCompare

[ Source](https://github.com/Koudela/eArc-minimal)[ Packagist](https://packagist.org/packages/earc/minimal)[ RSS](/packages/earc-minimal/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)Dependencies (4)Versions (2)Used By (0)

eArc minimal
============

[](#earc-minimal)

Installation skeleton of the eArc framework.

The eArc stands for explicit architecture. It is about the urge to make code as easy to comprehend as possible and the strive to touch the programmers freedom to code as little as possible. In short it is about simplicity and good architecture.

To function right out of the box this installation comes with the [twig template engine](https://packagist.org/packages/twig/twig). Feel free to use any template engine you like.

This skeleton is configured for the use with an apache2 web server and the installation instruction refer to it. You are free to use any web server you want. Please note the PHP version must be 7.2 or higher.

The eArc framework components have a more detailed documentation at their git page:

- [earc/core (dispatcher/app lifecycle)](https://github.com/Koudela/eArc-core)
- [earc/di (dependency container/dependency injection)](https://github.com/Koudela/eArc-di)
- [earc/router (router)](https://github.com/Koudela/eArc-router)

Table of Contents
-----------------

[](#table-of-contents)

- [Classification](#classification)
- [Installation](#installation)
    - [1. Get the source code](#1-get-the-source-code)
    - [2. Configure the web-server](#2-configure-the-web-server)
    - [3. Edit composer.json](#3-edit-composerjson)
    - [4. Initialise your favorite vcs](#4-initialise-your-favorite-vcs)
- [Usage](#usage)
    - [Launching the application](#launching-the-application)
    - [Using the controller](#using-the-controller)
    - [The application lifecycle](#the-application-lifecycle)
        - [The access controllers](#the-access-controllers)
        - [The main controller](#the-main-controller)
        - [Middleware](#middleware)
            - [Example](#example)
- [Releases](#releases)
    - [release v0.1](#release-v01)

Classification
--------------

[](#classification)

The eArc framework is the antithesis to the traditional MVC frameworks where there is only one base directory for every file usage (e.g. controller, entity, service, view, ...). The core idea at the beginning of eArcs creation was:

> We have this file system. It is one of the most basic concepts of all common operating systems. Trees are very potent data structures. Why not express common basic programming concepts and problems like ownership, access, flow, control, domain and dependency through it? Why not boost our comprehension of the programming code by the file system itself?

When work was in progress I realised that the web backend framework problem domain has decomposed itself into two tree domains. Each with its own base concepts and language.

1. The first tree domain is the world of the User-Interface. *Routing*, *access*, *request flow/control* and *user interaction* is expressed through the `/src/web-route` folder with its access and main controllers and its views.
2. The second tree domain is the world of the services\* and the business logic. *Domain*, *domain aggregation* and *domain interaction* is expressed in the four top level domain base folders `/src/businessDomains`, `/src/configurationDomains`, `/src/outputDomains` and `/src/persistenceDomains`, the (sub-) domain structure and the specific domain interfaces. Every domain is a small MVC world of its own (although business, configuration and persistence domains are lacking the views and output domains are lacking the model).

The eArc framework transforms the monolithic app approach of traditional MVCs into some sort of microservices meets controller-template-tree architecture.

\*Third party services reside in the `/vendor` folder. Only if the application is shielded against the third party service through an anti corruption layer or adapter service or has a separate app specific configuration service it can be detected through the base domains folder structure.

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

[](#installation)

### 1. Get the source code

[](#1-get-the-source-code)

Suppose your project folder for the eArc app is `/path/to/your/new/projekt/app`. Installation via composer:

```
$ composer create-project earc/minimal /path/to/your/new/projekt/app
```

If you do not have composer installed please check the [composer homepage](https://getcomposer.org/download/) for installation instructions.

### 2. Configure the web-server

[](#2-configure-the-web-server)

This instruction is for linux users running an apache2 web-server. If you are running another web-server or living on windows or mac or if you have configured apache in a unusual way please consult the internet.

(1) Create and open a file `my-app.conf` in the `/etc/apache2/sites-available`directory.

```
$ sudo vim /etc/apache2/sites-available/my-app.conf
```

Of course you can use nano as well or any editor you like.

(2) Add the apache configuration and save the file. For development purposes something like the following should suffice.

```

    ServerName my-app.vm
    ServerAlias www.my-app.vm

    ServerAdmin webmaster@localhost
    DocumentRoot /path/to/your/new/projekt/app/public/

        Options Indexes FollowSymLinks MultiViews
        AllowOverride FileInfo
        Require all granted

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

```

(3) Enable the my-app.vm site.

```
$ sudo a2ensite
```

(4) Check if you need to edit `/etc/hosts`

```
$ sudo vim /etc/hosts
```

Maybe you must add something like the following.

```
127.0.0.2   my-app.vm   www.my-app.vm

```

(5) Reload apache

```
sudo service apache2 restart
```

(6) Open your browser at `http://my-app.vm`.

If all went well you can now see the somewhat spartan eArc welcome page.

### 3. Edit composer.json

[](#3-edit-composerjson)

Now it's a good time to edit the composer.json in the project base folder to your need.

### 4. Initialise your favorite vcs

[](#4-initialise-your-favorite-vcs)

If you are using git. Go to your project base folder and type:

```
$ git init
```

Thumps up! You're ready to code...

If you are new to the eArc framework please read the next section!

Usage
-----

[](#usage)

### Launching the application

[](#launching-the-application)

### Using the controller

[](#using-the-controller)

Advanced Usage
--------------

[](#advanced-usage)

### The application lifecycle

[](#the-application-lifecycle)

The dispatching process has 5 phases:

1. Execution of the middleware registered to dispatch start.
2. Execution of the access controllers
3. Execution of the middleware registered to dispatch between.
4. Execution of the main controller
5. Execution of the middleware registered to dispatch end.

If one of the controllers returns a router object the dispatching process starts all over again injecting the new router object.

#### The access controllers

[](#the-access-controllers)

#### The main controller

[](#the-main-controller)

#### Middleware

[](#middleware)

##### Example

[](#example)

Releases
--------

[](#releases)

### release v0.1

[](#release-v01)

the first official release

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

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

2834d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b7308f2797252cace014cfec12c1b5978c1bf5608be78d7a188ff690192959f3?d=identicon)[Thomas Koudela](/maintainers/Thomas%20Koudela)

---

Top Contributors

[![Koudela](https://avatars.githubusercontent.com/u/21366492?v=4)](https://github.com/Koudela "Koudela (12 commits)")

---

Tags

earcearc-frameworkframeworkmicro-frameworkphpphp-frameworkphp-micro-frameworkskeleton-application

### Embed Badge

![Health badge](/badges/earc-minimal/health.svg)

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

###  Alternatives

[symfony/symfony

The Symfony PHP framework

31.3k86.3M2.2k](/packages/symfony-symfony)[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

19462.3M1.3k](/packages/drupal-core)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6939.5M343](/packages/drupal-core-recommended)

PHPackages © 2026

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