PHPackages                             phalcon/vokuro - 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. phalcon/vokuro

ActiveProject[Framework](/categories/framework)

phalcon/vokuro
==============

This is a sample application for the Phalcon PHP Framework

v5.0.4(1mo ago)367496189BSD-3-ClausePHPPHP &gt;=8.1CI failing

Since Jan 21Pushed 2w ago38 watchersCompare

[ Source](https://github.com/phalcon/vokuro)[ Packagist](https://packagist.org/packages/phalcon/vokuro)[ Docs](https://phalcon.io)[ GitHub Sponsors](https://github.com/phalcon)[ Fund](https://opencollective.com/phalcon)[ RSS](/packages/phalcon-vokuro/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (8)Dependencies (49)Versions (9)Used By (0)

Vökuró
======

[](#vökuró)

[![Latest Version](https://camo.githubusercontent.com/094a2f1bde5f2b5dba87dcc72860f9d4ff0f48a9a16a37f721c9770535f0a685/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7068616c636f6e2f766f6b75726f3f696e636c7564655f70726572656c6561736573267374796c653d666c61742d737175617265266c6f676f3d7061636b6167697374266c6f676f436f6c6f723d7768697465)](https://packagist.org/packages/phalcon/vokuro)[![PHP Version](https://camo.githubusercontent.com/86932c330acf7571da821c8053da1b7f36f9e9c794fcd11d62aae43700d27d3d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f7068616c636f6e2f766f6b75726f3f7374796c653d666c61742d737175617265266c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://packagist.org/packages/phalcon/vokuro)[![Total Downloads](https://camo.githubusercontent.com/ef00ed1d19e9880a216f28ebc465027cc7ed2629805484c0a2b323676913510f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7068616c636f6e2f766f6b75726f3f7374796c653d666c61742d737175617265266c6f676f3d7061636b6167697374266c6f676f436f6c6f723d7768697465)](https://packagist.org/packages/phalcon/vokuro/stats)[![License](https://camo.githubusercontent.com/78f0128092ff4a04e2bbb2c05da8e3546a6f57b4958749282cdffd1c9678d0f4/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f7068616c636f6e2f766f6b75726f3f7374796c653d666c61742d737175617265266c6f676f3d6f70656e736f75726365696e6974696174697665266c6f676f436f6c6f723d7768697465)](https://github.com/phalcon/vokuro/blob/master/LICENSE)

[![Vokuro CI](https://github.com/phalcon/vokuro/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/phalcon/vokuro/actions/workflows/main.yml)[![Quality Gate Status](https://camo.githubusercontent.com/911adba72d5a82cb833666164c2ce1e6fc516ba92120ec60f4400e6b9823a0b6/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7068616c636f6e5f766f6b75726f266d65747269633d616c6572745f737461747573)](https://sonarcloud.io/summary/new_code?id=phalcon_vokuro)[![Coverage](https://camo.githubusercontent.com/85ed5ee0f5c5afaaeea6999a687792d19ddab18c6beb9fa368eb6276c49136d5/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7068616c636f6e5f766f6b75726f266d65747269633d636f766572616765)](https://sonarcloud.io/summary/new_code?id=phalcon_vokuro)[![PDS Skeleton](https://camo.githubusercontent.com/50d01a5094afcc3a827c3cadaec43d23b2a256cb249f5fdd6e5ffdb53ea7971c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7064732d736b656c65746f6e2d626c75652e7376673f7374796c653d666c61742d737175617265)](https://github.com/php-pds/skeleton)

[![Discord](https://camo.githubusercontent.com/94fc3d9eff10556bb8115023b0f05a2b7465d01e863e0d7bb030e8fc51cfcf56/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3331303931303438383135323337353239373f6c6162656c3d446973636f7264266c6f676f3d646973636f7264267374796c653d666c61742d737175617265)](https://phalcon.io/discord)[![Contributors](https://camo.githubusercontent.com/e83ff382036c37e12c38e78def00df4f52a5bcb5f573d62a5c774f8fef38120b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f7068616c636f6e2f766f6b75726f3f7374796c653d666c61742d737175617265266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465)](https://github.com/phalcon/vokuro/graphs/contributors)[![OpenCollective Backers](https://camo.githubusercontent.com/b0e7e54861423843ca8c0b82b3cbdbd7e43557493dee35be2c721a9cc21107a1/68747470733a2f2f696d672e736869656c64732e696f2f6f70656e636f6c6c6563746976652f6261636b6572732f7068616c636f6e3f7374796c653d666c61742d737175617265266c6f676f3d6f70656e636f6c6c656374697665266c6f676f436f6c6f723d7768697465)](https://opencollective.com/phalcon)[![OpenCollective Sponsors](https://camo.githubusercontent.com/09f0801da6213d104e2283e28a70b5b5c9aa25076b9211442e403187c64ca12b/68747470733a2f2f696d672e736869656c64732e696f2f6f70656e636f6c6c6563746976652f73706f6e736f72732f7068616c636f6e3f7374796c653d666c61742d737175617265266c6f676f3d6f70656e636f6c6c656374697665266c6f676f436f6c6f723d7768697465)](https://opencollective.com/phalcon)

Vökuró is the sample application for the [Phalcon Framework](https://github.com/phalcon/cphalcon). It showcases authentication, ACL-based permissions, user/profile management, forms, mailing and more.

It runs on **Phalcon v5** (the C extension, default) and on **Phalcon v6**(the `phalcon/phalcon` package, currently alpha) from the same source.

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

[](#requirements)

- PHP 8.1 - 8.5
- MySQL 8.0 (provided by the Docker stack)
- Docker + Docker Compose (recommended), or a local PHP with the Phalcon extension (see [docs/installation.md](docs/installation.md))

Quick start (Docker)
--------------------

[](#quick-start-docker)

```
cp resources/.env.example .env
docker compose up -d --build

# Create and seed the database (migrations are not run on boot)
docker compose exec app composer migrate
docker compose exec app composer seed
```

> **Note:** `app` is the Compose *service* name, used as-is by `docker compose exec` above. The running container, however, is named `${PROJECT_PREFIX}-app` - `vokuro-app` by default, set via `PROJECT_PREFIX` in `.env`. If you address it with plain `docker exec`, type your container name instead, e.g. `docker exec vokuro-app composer migrate` (substitute your own prefix).

Then open:

- Application:
- Mailpit (captured e-mails):

The container waits for MySQL and serves the app; migrations are decoupled from boot - apply them with the commands above. Log in with one of the seeded accounts, e.g. `sarah.connor@skynet.dev` / `password1`.

### Choosing the Phalcon version

[](#choosing-the-phalcon-version)

```
docker compose up -d --build                      # v5 (C extension, default)
PHALCON_VARIANT=v6 docker compose up -d --build   # v6 (phalcon/phalcon, alpha)
```

The two are mutually exclusive: the v5 image installs the C extension, the v6 image installs the pure-PHP package instead.

### Choosing the PHP version

[](#choosing-the-php-version)

The image is built for one PHP version at a time, selected with the `PHP_VERSION`build arg (default `8.5`; supported `8.1`-`8.5`):

```
docker compose up -d --build                  # PHP 8.5 (default)
PHP_VERSION=8.1 docker compose up -d --build  # PHP 8.1
PHP_VERSION=8.2 docker compose up -d --build  # PHP 8.2
PHP_VERSION=8.3 docker compose up -d --build  # PHP 8.3
PHP_VERSION=8.4 docker compose up -d --build  # PHP 8.4
```

PIE compiles the Phalcon C extension (and pcov) from source for the selected version. The container keeps the same name (`vokuro-app`), so each rebuild **replaces** the previous one. To run several versions side by side, give each its own Compose project and prefix:

```
PHP_VERSION=8.1 PROJECT_PREFIX=vokuro81 docker compose -p vokuro81 up -d --build
# then: docker exec -w /srv vokuro81-app composer test
```

Quick start (Composer)
----------------------

[](#quick-start-composer)

Prefer a local PHP over Docker? Bootstrap a fresh copy straight from Packagist:

```
composer create-project phalcon/vokuro vokuro
cd vokuro
```

The post-create hook copies `resources/.env.example` to `.env` and prints the next steps; [docs/installation.md](docs/installation.md) has the full local walkthrough (environment, database, serving). Out of the box the app runs on the bundled `phalcon/phalcon` (v6) package - no extension needed. To run on the Phalcon v5 C extension instead, install it with [PIE](https://github.com/php/pie) as described in step 1 of the local setup; once the extension is loaded, PHP prefers it automatically and the bundled v6 package is simply shadowed - it can stay installed.

Composer scripts
----------------

[](#composer-scripts)

Run them inside the container, e.g. `docker compose exec app composer cs`:

ScriptDescription`composer cs`PHP\_CodeSniffer (PSR-12)`composer cs-fix`Auto-fix coding standard issues (phpcbf)`composer cs-fixer`PHP CS Fixer (dry-run)`composer cs-fixer-fix`Apply PHP CS Fixer`composer analyze`PHPStan static analysis`composer test`PHPUnit suites (unit, functional, browser) via `vendor/bin/talon``composer test-coverage`PHPUnit + Clover coverage (`tests/_output/coverage.xml`)`composer migrate`Run database migrations (Phinx)`composer seed`Seed the database> `composer analyze` resolves Phalcon classes from the `phalcon/phalcon` (v6) source, so run it where the v5 C extension is **not** loaded (the CI `quality` job, or a plain host). The coding-standard and test scripts are unaffected.

Debug Bar
---------

[](#debug-bar)

Vökuró wires up the [Phalcon debug bar](https://github.com/phalcon/debugbar). A single events manager is registered as a shared service (`src/Providers/EventsManagerProvider.php`) and handed to the database, view, router, and dispatcher providers; `src/Providers/DebugBarProvider.php` then boots the bar against the application. Once the app is running, a status bar appears at the bottom of every HTML page with per-request diagnostics - timing, the matched route, database queries and their bound parameters, rendered views, and the session, config, and request data.

The bar runs in development only. It is gated by `APP_ENV`, which `resources/.env.example` sets to `development`; it does not boot when `APP_ENV` is `production` or `prod`. See the [debug bar package](https://github.com/phalcon/debugbar) for configuration and the full list of collectors.

Running the tests
-----------------

[](#running-the-tests)

The suite is split into three PHPUnit testsuites - `unit`, `functional`, and `browser`(in-process browser testing through [`phalcon/talon`](https://github.com/phalcon/talon)). The Docker stack provides everything they need: a seeded MySQL database and a [Mailpit](https://mailpit.axllent.org/) SMTP catcher, so no e-mail ever leaves the host.

```
docker compose up -d --build
docker compose exec app composer migrate          # once - create the schema
docker compose exec app composer seed             # once - load fixtures

docker compose exec app composer test             # the full suite
docker compose exec app composer test-coverage    # + Clover coverage in tests/_output
```

### Test secrets

[](#test-secrets)

The test configuration lives in `tests/.env.test` and is loaded automatically by `tests/bootstrap.php` - you do not need to supply anything by hand:

VariableValuePurpose`APP_CRYPT_SALT`*(preset)*crypt key for the session / security services`DB_USERNAME` / `DB_PASSWORD``root` / `secret`matches the MySQL container's root password`DB_NAME``vokuro`the migrated and seeded test database`MAIL_SMTP_SERVER` / `MAIL_SMTP_PORT``127.0.0.1` / `1025`Mailpit catcher - tests never reach a real SMTP serverReal OS / CI environment variables take precedence over `tests/.env.test`, so the same suite runs unchanged inside Docker (service-name hosts `mysql` / `mailpit`) and on a native host or in CI (loopback `127.0.0.1`). The only secret that is **not** local is `SONAR_TOKEN`, a GitHub Actions secret used solely by the `sonarqube` job.

Updating Phalcon
----------------

[](#updating-phalcon)

- **v5** - bump `PHALCON_V5_CONSTRAINT` in `resources/docker/Dockerfile` and rebuild: `docker compose build app`. PIE compiles the C extension from source (this is the only way to update a C extension).
- **v6** - `docker compose exec app composer update phalcon/phalcon` (no rebuild). Dependabot opens the bump PR automatically.

Project layout
--------------

[](#project-layout)

Follows the [PDS skeleton](https://github.com/php-pds/skeleton):

```
config/     application configuration
docs/       documentation
public/     web server root
resources/  tooling configs, docker, phinx, migrations, seeds
src/        application source
tests/      PHPUnit suites (unit, functional, browser)
themes/     Volt views
var/        runtime cache and logs

```

License
-------

[](#license)

Vökuró is open-sourced software licensed under the New BSD License. See [LICENSE](LICENSE).

###  Health Score

64

—

FairBetter than 99% of packages

Maintenance95

Actively maintained with recent releases

Popularity38

Limited adoption so far

Community36

Small or concentrated contributor base

Maturity77

Established project with proven stability

 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.

###  Release Activity

Cadence

Every ~637 days

Recently: every ~5 days

Total

7

Last Release

31d ago

Major Versions

1.2.0 → v2.0.02019-12-22

v2.0.0 → v5.0.02026-06-23

PHP version history (3 changes)1.2.0PHP &gt;=5.4

v2.0.0PHP &gt;=7.2

v5.0.0PHP &gt;=8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/97049a4bd2f9716e97749f93fe32f8da0a3eeda4192772dec73a6a2531294cea?d=identicon)[klay](/maintainers/klay)

![](https://avatars.githubusercontent.com/u/1221505?v=4)[The Phalcon PHP Framework](/maintainers/phalcon)[@phalcon](https://github.com/phalcon)

![](https://avatars.githubusercontent.com/u/7444246?v=4)[Ruud Boon](/maintainers/ruudboon)[@ruudboon](https://github.com/ruudboon)

---

Top Contributors

[![Jeckerson](https://avatars.githubusercontent.com/u/3289702?v=4)](https://github.com/Jeckerson "Jeckerson (174 commits)")[![niden](https://avatars.githubusercontent.com/u/1073784?v=4)](https://github.com/niden "niden (106 commits)")[![sergeyklay](https://avatars.githubusercontent.com/u/1256298?v=4)](https://github.com/sergeyklay "sergeyklay (75 commits)")[![dschissler](https://avatars.githubusercontent.com/u/3968727?v=4)](https://github.com/dschissler "dschissler (18 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (13 commits)")[![Izopi4a](https://avatars.githubusercontent.com/u/7415020?v=4)](https://github.com/Izopi4a "Izopi4a (9 commits)")[![moderndeveloperllc](https://avatars.githubusercontent.com/u/1920405?v=4)](https://github.com/moderndeveloperllc "moderndeveloperllc (9 commits)")[![ruudboon](https://avatars.githubusercontent.com/u/7444246?v=4)](https://github.com/ruudboon "ruudboon (6 commits)")[![alejosv](https://avatars.githubusercontent.com/u/14202497?v=4)](https://github.com/alejosv "alejosv (5 commits)")[![sergeysviridenko](https://avatars.githubusercontent.com/u/26042973?v=4)](https://github.com/sergeysviridenko "sergeysviridenko (5 commits)")[![tetrapak07](https://avatars.githubusercontent.com/u/5859132?v=4)](https://github.com/tetrapak07 "tetrapak07 (5 commits)")[![andresgutierrez](https://avatars.githubusercontent.com/u/213590?v=4)](https://github.com/andresgutierrez "andresgutierrez (4 commits)")[![alec-w](https://avatars.githubusercontent.com/u/13207881?v=4)](https://github.com/alec-w "alec-w (3 commits)")[![elburgl69](https://avatars.githubusercontent.com/u/5506942?v=4)](https://github.com/elburgl69 "elburgl69 (3 commits)")[![kenjikobe](https://avatars.githubusercontent.com/u/2137523?v=4)](https://github.com/kenjikobe "kenjikobe (2 commits)")[![vega-7](https://avatars.githubusercontent.com/u/20041598?v=4)](https://github.com/vega-7 "vega-7 (2 commits)")[![xboston](https://avatars.githubusercontent.com/u/201306?v=4)](https://github.com/xboston "xboston (1 commits)")[![AWS-alchemy](https://avatars.githubusercontent.com/u/10967829?v=4)](https://github.com/AWS-alchemy "AWS-alchemy (1 commits)")[![bnlambert](https://avatars.githubusercontent.com/u/4788731?v=4)](https://github.com/bnlambert "bnlambert (1 commits)")[![ch3k1](https://avatars.githubusercontent.com/u/10967829?v=4)](https://github.com/ch3k1 "ch3k1 (1 commits)")

---

Tags

acldemophalconphalcon-frameworkphpsamplesecuritytutorialvokuroframeworkphalconsample appvokuro

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Psalm

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/phalcon-vokuro/health.svg)

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

###  Alternatives

[laravel/framework

The Laravel Framework.

34.9k556.2M21.3k](/packages/laravel-framework)[tempest/framework

The PHP framework that gets out of your way.

2.3k37.6k20](/packages/tempest-framework)[spiral/framework

Spiral, High-Performance PHP/Go Framework

2.1k2.3M72](/packages/spiral-framework)[shopware/platform

The Shopware e-commerce core

3.4k1.5M3](/packages/shopware-platform)[elgg/elgg

Elgg is an award-winning social networking engine, delivering the building blocks that enable businesses, schools, universities and associations to create their own fully-featured social networks and applications.

1.7k17.3k100](/packages/elgg-elgg)[zemit-cms/core

Build Phalcon REST APIs faster with database-first scaffolding, model relationships, eager loading, identity, permissions, CLI, and WebSocket support.

138.5k1](/packages/zemit-cms-core)

PHPackages © 2026

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