PHPackages                             phalcon/invo - 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/invo

ActiveProject[Framework](/categories/framework)

phalcon/invo
============

This is a sample application for the Phalcon PHP Framework

v5.0.2(1mo ago)3462304BSD-3-ClausePHPPHP &gt;=8.2CI passing

Since Jan 19Pushed 1mo ago51 watchersCompare

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

READMEChangelog (7)Dependencies (12)Versions (8)Used By (0)

INVO
====

[](#invo)

[![Latest Version](https://camo.githubusercontent.com/917498f9ed02b38d38baf0695d0f7700d1772f0743c6ba126d510874b4e19770/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7068616c636f6e2f696e766f3f696e636c7564655f70726572656c6561736573267374796c653d666c61742d737175617265266c6f676f3d7061636b6167697374266c6f676f436f6c6f723d7768697465)](https://packagist.org/packages/phalcon/invo)[![PHP Version](https://camo.githubusercontent.com/0760452fbec23a56ac7530398bea97a00aec030e9f9f26d7d5d3c9449f0a2b16/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f7068616c636f6e2f696e766f3f7374796c653d666c61742d737175617265266c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://packagist.org/packages/phalcon/invo)[![Total Downloads](https://camo.githubusercontent.com/7f2b50ac6b1e6fd4e45dbe2a497d25b698ad5bebf30c66171272323c4c7a9060/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f7068616c636f6e2f696e766f3f7374796c653d666c61742d737175617265266c6f676f3d7061636b6167697374266c6f676f436f6c6f723d7768697465)](https://packagist.org/packages/phalcon/invo/stats)[![License](https://camo.githubusercontent.com/ae0ed380a5c3a4821ba9df87f774d0ebdd295205ce7ef48dc67714c1fb9654ce/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f7068616c636f6e2f696e766f3f7374796c653d666c61742d737175617265266c6f676f3d6f70656e736f75726365696e6974696174697665266c6f676f436f6c6f723d7768697465)](https://github.com/phalcon/invo/blob/master/LICENSE)

[![Invo CI](https://github.com/phalcon/invo/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/phalcon/invo/actions/workflows/main.yml)[![Quality Gate Status](https://camo.githubusercontent.com/1e0fa1c2d171ea61eaa9ad1ad09a8bca20e3cf63e6e1765119ec79eecad9aa90/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7068616c636f6e5f696e766f266d65747269633d616c6572745f737461747573)](https://sonarcloud.io/summary/new_code?id=phalcon_invo)[![Coverage](https://camo.githubusercontent.com/86b644514be26a1212db8ba247acded087e1dbac1194355534a546f8a3f0d6a9/68747470733a2f2f736f6e6172636c6f75642e696f2f6170692f70726f6a6563745f6261646765732f6d6561737572653f70726f6a6563743d7068616c636f6e5f696e766f266d65747269633d636f766572616765)](https://sonarcloud.io/summary/new_code?id=phalcon_invo)[![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/dc46c09d1196c75ed07dec5d983d697d4e40e9a2733e8bce5b43fa94aed0141b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f7068616c636f6e2f696e766f3f7374796c653d666c61742d737175617265266c6f676f3d676974687562266c6f676f436f6c6f723d7768697465)](https://github.com/phalcon/invo/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)

INVO is the sample invoicing application for the [Phalcon Framework](https://github.com/phalcon/cphalcon). It showcases CRUD management (companies, products, product types, invoices), forms, ACL-based access control and session authentication.

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.2 – 8.5
- MySQL 8.0 (provided by the Docker stack)
- Docker + Docker Compose (recommended), or a local PHP with the Phalcon extension

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

[](#quick-start-docker)

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

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

> **Note:** `app` is the Compose *service* name, used as-is by `docker compose exec` above. The running container, however, is named `${PROJECT_PREFIX}-app` - `invo-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 invo-app composer migrate` (substitute your own prefix).

Then open  (override the host port with `APP_PORT` in `.env`).

Log in with the seeded demo account: **`demo`** / **`phalcon`**.

### 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.2`–`8.5`):

```
docker compose up -d --build                  # PHP 8.5 (default)
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 (`invo-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.2 PROJECT_PREFIX=invo82 docker compose -p invo82 up -d --build
# then: docker exec -w /srv invo82-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/invo invo
cd invo
```

The post-create hook copies `.env.example` to `.env` and prints the next steps. 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), the official PHP extension installer (unlike pecl, it builds from source and supports current PHP versions):

```
curl -fsSL https://github.com/php/pie/releases/latest/download/pie.phar -o pie.phar
sudo php pie.phar install phalcon/cphalcon:^5.0
php -m | grep -i phalcon
```

Once the extension is loaded, PHP prefers it automatically and the bundled v6 package is simply shadowed - it can stay installed. Point `.env` at your MySQL, then `composer migrate`, serve `public/`, and run the suites with `vendor/bin/talon run`.

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) via `vendor/bin/talon``composer test-coverage`PHPUnit + Clover coverage (`tests/_output/coverage.xml`)`composer migrate`Run database migrations (`phalcon/migrations`)> `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.

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

[](#running-the-tests)

The suite is split into two PHPUnit testsuites - `unit` and `functional`. The functional tests dispatch the application in-process through [`phalcon/talon`](https://github.com/phalcon/talon), so no web server is needed.

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

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`DB_USERNAME` / `DB_PASSWORD``root` / `secret`matches the MySQL container's root password`DB_NAME``invo`the migrated test database`tests/.env.test` is loaded with Dotenv's immutable loader, so any variable already set in the environment takes precedence - the same suite runs unchanged inside Docker (service-name host `mysql`) 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
public/     web server root
resources/  tooling configs, docker, migrations
src/        application source
tests/      PHPUnit suites (unit, functional)
themes/     Volt views
var/        runtime cache and logs

```

Contributing
------------

[](#contributing)

See [CONTRIBUTING.md](CONTRIBUTING.md).

License
-------

[](#license)

INVO is open-sourced software licensed under the New BSD License. See [LICENSE](LICENSE).

###  Health Score

59

—

FairBetter than 98% of packages

Maintenance91

Actively maintained with recent releases

Popularity27

Limited adoption so far

Community35

Small or concentrated contributor base

Maturity75

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

Recently: every ~522 days

Total

7

Last Release

48d ago

Major Versions

v1.0.1 → v2.0.02022-10-13

v2.0.0 → v5.0.02026-06-27

PHP version history (3 changes)1.0.0.x-devPHP &gt;=7.2

v2.0.0PHP &gt;=8.0

v5.0.0PHP &gt;=8.2

### Community

Maintainers

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

---

Top Contributors

[![Jeckerson](https://avatars.githubusercontent.com/u/3289702?v=4)](https://github.com/Jeckerson "Jeckerson (133 commits)")[![niden](https://avatars.githubusercontent.com/u/1073784?v=4)](https://github.com/niden "niden (107 commits)")[![sergeyklay](https://avatars.githubusercontent.com/u/1256298?v=4)](https://github.com/sergeyklay "sergeyklay (38 commits)")[![aircodepl](https://avatars.githubusercontent.com/u/17483386?v=4)](https://github.com/aircodepl "aircodepl (17 commits)")[![andresgutierrez](https://avatars.githubusercontent.com/u/213590?v=4)](https://github.com/andresgutierrez "andresgutierrez (10 commits)")[![brikou](https://avatars.githubusercontent.com/u/383212?v=4)](https://github.com/brikou "brikou (7 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (6 commits)")[![sergeysviridenko](https://avatars.githubusercontent.com/u/26042973?v=4)](https://github.com/sergeysviridenko "sergeysviridenko (6 commits)")[![s-ohnishi](https://avatars.githubusercontent.com/u/6782530?v=4)](https://github.com/s-ohnishi "s-ohnishi (5 commits)")[![SidRoberts](https://avatars.githubusercontent.com/u/1364214?v=4)](https://github.com/SidRoberts "SidRoberts (4 commits)")[![delphianer](https://avatars.githubusercontent.com/u/44456919?v=4)](https://github.com/delphianer "delphianer (3 commits)")[![superrosko](https://avatars.githubusercontent.com/u/23222142?v=4)](https://github.com/superrosko "superrosko (2 commits)")[![carvajaldiazeduar](https://avatars.githubusercontent.com/u/1197509?v=4)](https://github.com/carvajaldiazeduar "carvajaldiazeduar (2 commits)")[![tugrul](https://avatars.githubusercontent.com/u/163442?v=4)](https://github.com/tugrul "tugrul (2 commits)")[![MattiasNilsson](https://avatars.githubusercontent.com/u/1718315?v=4)](https://github.com/MattiasNilsson "MattiasNilsson (1 commits)")[![alec-w](https://avatars.githubusercontent.com/u/13207881?v=4)](https://github.com/alec-w "alec-w (1 commits)")[![aisuhua](https://avatars.githubusercontent.com/u/11390617?v=4)](https://github.com/aisuhua "aisuhua (1 commits)")[![simkuns](https://avatars.githubusercontent.com/u/6117989?v=4)](https://github.com/simkuns "simkuns (1 commits)")[![Ultimater](https://avatars.githubusercontent.com/u/1922199?v=4)](https://github.com/Ultimater "Ultimater (1 commits)")[![xboston](https://avatars.githubusercontent.com/u/201306?v=4)](https://github.com/xboston "xboston (1 commits)")

---

Tags

demoinvophalconphalcon-frameworkphpsampletutorialframeworkphalconsample appinvo

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

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

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

###  Alternatives

[laravel/framework

The Laravel Framework.

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

The PHP framework that gets out of your way.

2.3k37.6k21](/packages/tempest-framework)[phalcon/devtools

This tools provide you useful scripts to generate code helping to develop faster and easy applications that use with Phalcon framework.

1.3k2.1M54](/packages/phalcon-devtools)[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)[doppar/framework

The Doppar Framework

4112.6k14](/packages/doppar-framework)[lion/bundle

Lion-framework configuration and initialization package

132.4k5](/packages/lion-bundle)

PHPackages © 2026

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