celema/core

Celema core web framework

Maintainers

Package info

codeberg.org/celema/core

Homepage

Issues

pkg:composer/celema/core

Transparency log

Statistics

Installs: 9

Dependents: 1

Suggesters: 0

0.5.0 2026-07-18 23:35 UTC

This package is auto-updated.

Last update: 2026-07-21 18:42:09 UTC


README

ci code coverage type coverage psalm level Software License

Celema Core is a lightweight and easily extendable PHP 8.5+ web framework.

[!WARNING] This library is under active development, some of its features are still experimental and subject to change. Large parts of the documentation are missing.

It features:

  • Http Routing.
  • An autowiring container used for automatic dependency injection.
  • Middleware.
  • Error handling for PSR-15 request pipelines.
  • Convenience wrappers for PSR request, response and middleware.
  • Logging.

Routing

App exposes the router's common route helpers and runs requests through the router RoutingHandler internally.

use Celema\Core\App;
use Celema\Router\Group;

$app = App::create();

$app->get('/health', [HealthController::class, 'show'], 'health');
$app->map(['GET', 'POST'], '/login', [AuthController::class, 'login'], 'login');
$app->any('/webhook', $webhook, 'webhook');

$app->group('/admin', function (Group $admin) use ($auth): void {
	$admin->middleware($auth);
	$admin->controller(AdminController::class);

	$admin->get('', 'index', 'admin.index');
	$admin->post('/login', 'login', 'admin.login');
});

Development servers

Core provides two console command classes for local development:

  • Celema\Core\Server\Server runs the application with the PHP CLI's built-in server.
  • Celema\Core\Server\FrankenPhp runs it with the frankenphp executable from PATH.

Register either class with celema/console using a factory that supplies the application's public directory. Both commands support host, port, request-log filtering, and BrowserSync-backed --watch mode. The FrankenPHP command uses classic mode, not worker mode; its --debug option enables verbose Caddy logs. FrankenPHP embeds its own PHP runtime, extensions, and configuration rather than using the PHP CLI that starts the command.

Development example

The repository's example app exercises routing, autowiring, request and response helpers, middleware, error handling, static assets, and request-log states. Run it on port 1973 with either development server:

./app/run server
./app/run frankenphp

Add --watch to run BrowserSync and reload when the example or Core source changes.

Supported PSRs:

  • PSR-3 Logger Interface
  • PSR-4 Autoloading
  • PSR-7 Http Messages (Request, Response, Stream, and so on.)
  • PSR-11 Container Interface
  • PSR-12 Extended Coding Style
  • PSR-15 Http Middleware
  • PSR-17 Http Factories

License

This project is licensed under the MIT license.