PHPackages                             openvk/chandler - 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. openvk/chandler

ActiveLibrary

openvk/chandler
===============

Chandler is a PHP 8.2+ web framework powering OpenVK.

1241↑2607.3%10[6 issues](https://github.com/OpenVK/chandler/issues)[4 PRs](https://github.com/OpenVK/chandler/pulls)PHPCI passing

Since Aug 8Pushed today1 watchersCompare

[ Source](https://github.com/OpenVK/chandler)[ Packagist](https://packagist.org/packages/openvk/chandler)[ RSS](/packages/openvk-chandler/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (3)Used By (0)

Chandler
========

[](#chandler)

Chandler is a PHP 8.2+ web framework powering [OpenVK](https://github.com/openvk/openvk).

Chandler provides the foundation — routing, ORM, templating, auth, sessions, email, and captcha — while apps register themselves as builtin extensions and supply the actual pages.

Important

After 0.1.0 update, site administrators do not need to install Chandler separately. It is now installed through `composer`.

If you were using Chandler before this update, you will have to migrate. In case of OpenVK, please refer to [this Pull Request](https://github.com/OpenVK/openvk/pull/1718).

Features
--------

[](#features)

- **Routing** — YAML-defined routes with typed placeholders (`{num}`, `{text}`, `{slug}`, custom `{?regex}`)
- **ORM** — Nette Database with ActiveRow-style `DBEntity` models, soft-delete, change logging
- **Templating** — [Latte](https://latte.nette.org) engine with custom `{css}`, `{script}`, `{presenter}` tags
- **Auth** — Argon2id password hashing, session tokens (JWT), IP/UA validation
- **Captcha** — built-in, served as WebP, stored captcha with encryption
- **Email** — SwiftMailer SMTP or Postmark API
- **Events** — `EventDispatcher` for hook-based plugins
- **Console** — Symfony Console commands
- **Config** — YAML with disk caching
- **DI** — Nette DI container per app namespace

Quick start
-----------

[](#quick-start)

See the [basic example](examples/basic/) for a minimal runnable app:

```
examples/basic/
├── helloapp.yml        # Unified config (chandler: + app: sections)
├── bootstrap.php       # Registers the app as a builtin extension
├── htdocs/index.php    # Web entry point
└── Web/                # Presenters, routes, templates

```

```
cd examples/basic && php -S 127.0.0.1:8080 -t htdocs htdocs/index.php
```

How to develop an app
---------------------

[](#how-to-develop-an-app)

Please, refer to [USAGE.md](USAGE.md) for more details.

Requirements
------------

[](#requirements)

- PHP 8.2+
- ext-sodium, ext-yaml (recommended), ext-mbstring
- MySQL 8+ / Percona Server / MariaDB

State of this repo
==================

[](#state-of-this-repo)

This product is still in development phase, we are currently writing documentation/tests and API is going to change.

###  Health Score

27

—

LowBetter than 46% of packages

Maintenance55

Moderate activity, may be stable

Popularity22

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor2

2 contributors hold 50%+ of commits

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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/29814a48594128433537c5029542213a7c71418353b6254702ada8a443e50c13?d=identicon)[WerySkok](/maintainers/WerySkok)

---

Top Contributors

[![veselcraft](https://avatars.githubusercontent.com/u/22993408?v=4)](https://github.com/veselcraft "veselcraft (22 commits)")[![celestora](https://avatars.githubusercontent.com/u/34442450?v=4)](https://github.com/celestora "celestora (22 commits)")[![WerySkok](https://avatars.githubusercontent.com/u/15957616?v=4)](https://github.com/WerySkok "WerySkok (11 commits)")[![AlmaArmas](https://avatars.githubusercontent.com/u/67460342?v=4)](https://github.com/AlmaArmas "AlmaArmas (10 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (5 commits)")[![Lumaeris](https://avatars.githubusercontent.com/u/10499845?v=4)](https://github.com/Lumaeris "Lumaeris (3 commits)")[![n1rwana](https://avatars.githubusercontent.com/u/93197434?v=4)](https://github.com/n1rwana "n1rwana (2 commits)")[![TYMA22389](https://avatars.githubusercontent.com/u/174411009?v=4)](https://github.com/TYMA22389 "TYMA22389 (1 commits)")[![crythoughts](https://avatars.githubusercontent.com/u/234468996?v=4)](https://github.com/crythoughts "crythoughts (1 commits)")

---

Tags

frameworkphpweb-site

### Embed Badge

![Health badge](/badges/openvk-chandler/health.svg)

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

PHPackages © 2026

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