phalcon/vokuro
phalcon/vokuro has 366 GitHub stars and 187 forks. Star changes are not measured yet. Last checked 2026-11-13 23:31 UTC. Last push 2026-11-11.
Measured star growth
- in 24h
- Collecting history
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
Sample application for Phalcon Framework (Acl, Auth, Security)
SecurityREADME.md
OriginalVökuró
Vökuró is the sample application for the Phalcon Framework. 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
- 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)
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:
appis the Compose service name, used as-is bydocker compose execabove. The running container, however, is named${PROJECT_PREFIX}-app-vokuro-appby default, set viaPROJECT_PREFIXin.env. If you address it with plaindocker exec, type your container name instead, e.g.docker exec vokuro-app composer migrate(substitute your own prefix).
Then open:
- Application: http://localhost:8080
- Mailpit (captured e-mails): http://localhost:8025
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. [email protected] / password1.
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
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)
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 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 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
Run them inside the container, e.g. docker compose exec app composer cs:
| Script | Description |
|---|---|
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 analyzeresolves Phalcon classes from thephalcon/phalcon(v6) source, so run it where the v5 C extension is not loaded (the CIqualityjob, or a plain host). The coding-standard and test scripts are unaffected.
Debug Bar
Vökuró wires up the Phalcon debug bar. 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 for configuration and the full list of collectors.
Running the tests
The suite is split into three PHPUnit testsuites - unit, functional, and browser
(in-process browser testing through phalcon/talon).
The Docker stack provides everything they need: a seeded MySQL database and a
Mailpit 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
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:
| Variable | Value | Purpose |
|---|---|---|
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 server |
Real 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
- v5 - bump
PHALCON_V5_CONSTRAINTinresources/docker/Dockerfileand 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
Follows the 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
Vökuró is open-sourced software licensed under the New BSD License. See LICENSE.
Explore related projects
trimstray/the-book-of-secret-knowledge
A collection of inspiring lists, manuals, cheatsheets, blogs, hacks, one-liners, cli/web tools and more.
258,284 starsHack-with-Github/Awesome-Hacking
A collection of various awesome lists for hackers, pentesters and security researchers
125,454 starsswisskyrepo/PayloadsAllTheThings
A list of useful payloads and bypass for Web Application Security and Pentest/CTF
82,660 starscaddyserver/caddy
Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
79,026 stars