PHPackages                             sharpdressedcodes/keletos - 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. sharpdressedcodes/keletos

ActiveLibrary[Framework](/categories/framework)

sharpdressedcodes/keletos
=========================

Minimalist PHP Framework

v0.1.0(6y ago)04proprietaryPHPPHP ^7.2

Since Sep 9Pushed 6y ago1 watchersCompare

[ Source](https://github.com/sharpdressedcodes/keletos)[ Packagist](https://packagist.org/packages/sharpdressedcodes/keletos)[ Docs](https://github.com/sharpdressedcodes/keletos)[ RSS](/packages/sharpdressedcodes-keletos/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (7)Versions (6)Used By (0)

Keletos
=======

[](#keletos)

*Minimalist PHP Framework designed to get the job done with minimum fuss.*

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

[](#installation)

```
composer require sharpdressedcodes/keletos

```

Usage
-----

[](#usage)

At a minimum, you'll need to setup Routes inside `application/Routes/[filename].php`:

```
use Keletos\Component\Routing\Router;
use Application\Controller\Main as MainController;

Router::match(['GET', 'POST'], '/', MainController::class);

Router::get('/test/{id?1}', function($id = -1) {
    echo 'no controller!!! ' . $id;
});

Router::get('/user/{name}', function($name) {
    echo "name is $name";
}, [
    'requirements' => [
        'name' => '/^\w+$/',
    ]
]);

Router::any('*', [MainController::class, 'catchAll']);

```

You can use a Controller or an anonymous function as the action. If you just pass in a class without a method, it will default to an `index` method.

If you choose to use a Controller, then extend the `Keletos\Controller\Controller` class. Example controller:

```
class Main extends Controller {
    public function index() {
        $views[] = [
            'view' => 'google-search-api',
            'var' => 'content',
            'viewParams' => $viewParams,
        ];

        $this->render([
            //'layout' => $this->_layoutFile,
            'views' => $views,
            'title' => $pageTitle,
        ]);
    }
}

```

`$viewParams` are the variables passed to the view.

Then create an index page:

```
use Keletos\Component\Application\Application;
//use Keletos\Component\ConfigManager;
//use Keletos\Component\Rendering\Renderer;
//use Keletos\Component\Routing\Router;

(function() {

    $basePath = dirname(__DIR__);

    require_once $basePath . '/vendor/autoload.php';
    require_once dirname($basePath) . '/c3.php';

    //$configManager = new ConfigManager($basePath);
    //$config = $configManager->getConfig();

    //$renderer = new Renderer($config, ($config['debug'] ? 'Debug' : 'Main') . '.php');
    //$router = new Router(['web'], $renderer, $basePath);

    $application = Application::factory([
        'routes' => ['web'],
        'basePath' => $basePath,
        //'renderer' => $renderer,
        //'router' => $router,
        //'configManager' => $configManager,
    ]);

    $application->run();

})();

```

You can even override the default `Renderer` and `Router`.

Accessing the application variable from anywhere in the code:

```
$application = Application::instance();

```

###  Health Score

21

—

LowBetter than 18% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community7

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

Total

5

Last Release

2480d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/932604?v=4)[Greg](/maintainers/sharpdressedcodes)[@sharpdressedcodes](https://github.com/sharpdressedcodes)

---

Top Contributors

[![sharpdressedcodes](https://avatars.githubusercontent.com/u/932604?v=4)](https://github.com/sharpdressedcodes "sharpdressedcodes (2 commits)")

###  Code Quality

TestsCodeception

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/sharpdressedcodes-keletos/health.svg)

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

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k543.8M19.7k](/packages/laravel-framework)[symfony/framework-bundle

Provides a tight integration between Symfony components and the Symfony full-stack framework

3.6k251.7M11.3k](/packages/symfony-framework-bundle)[drupal/core

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

21866.0M1.7k](/packages/drupal-core)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M497](/packages/pimcore-pimcore)[shopware/platform

The Shopware e-commerce core

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

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

6942.5M406](/packages/drupal-core-recommended)

PHPackages © 2026

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