PHPackages                             ionzile/ions - 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. ionzile/ions

ActiveProject[Framework](/categories/framework)

ionzile/ions
============

Application starter for the Ions PHP framework — a secure, structured host-app skeleton on Symfony HTTP + Illuminate, ready for `composer create-project`.

4.6.1(2w ago)2114MITPHPPHP &gt;=8.3

Since Feb 28Pushed 2w ago1 watchersCompare

[ Source](https://github.com/tahadeveloper/framework-ions)[ Packagist](https://packagist.org/packages/ionzile/ions)[ Docs](https://github.com/tahadeveloper/framework-ions)[ RSS](/packages/ionzile-ions/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (18)Versions (36)Used By (0)

Ions Framework — Starter (`ionzile/ions`)
=========================================

[](#ions-framework--starter-ionzileions)

A minimal host application for the [Ions PHP framework](https://github.com/tahadeveloper/ions.core) (`ionzile/core`). This is the published starter — create a new app with one command.

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

[](#quick-start)

```
composer create-project ionzile/ions my-app
cd my-app
```

```
cp .env.example .env
# set APP_KEY in .env (64-char hex):
php -r "echo bin2hex(random_bytes(32)), PHP_EOL;"

# sanity-check the setup (APP_KEY, writable var/, DB, security posture):
php bin/ions doctor

php bin/ions serve     # dev server on http://127.0.0.1:8000 (--host/--port)
```

(`serve` wraps PHP's built-in server — `php -S localhost:8000 -t public`works just as well if you prefer the raw command.)

Open  — you should see the welcome page. `curl localhost:8000/api/ping` returns JSON.

Serving behind nginx or Apache? `public/.htaccess` ships the Apache rewrite; for the full nginx/Apache configs, PHP-FPM notes and the deploy checklist see `docs/deploy.md` in `ionzile/core`.

> Local HTTP dev: session cookies are `Secure` by default (4.1). If you need session/CSRF over plain `http://localhost`, set `'cookie_secure' => 'auto'`in `config/session.php`.

Where things live
-----------------

[](#where-things-live)

PathPurpose`public/index.php`Front controller (`Kernel::boot()` + `Kernel::run()`)`bin/ions`Console (`php bin/ions list`, `make:*`, `migrate`, `queue:work`, `optimize`, `doctor`)`config/`One PHP file per namespace: `app.php` → `config('app.*')`, …`routes/web.php`, `routes/api.php`Route definitions (`Ions\Bundles\Route`)`app/`Application code (`App\` PSR-4): models in `app/Models`, controllers in `app/Http/Controllers`, API controllers in `app/Http/Api`, commands in `app/Commands`, service providers in `app/Providers` (auto-discovered — no `app.providers` entry needed; see `docs/config.md` in `ionzile/core`)`database/`Standard data layout (4.4+): `migrations/`, `seeders/` (`Database\Seeders`), `factories/` (`Database\Factories`), `schemas/`, `backups/`. The two `Database\…` sub-namespaces are PSR-4-mapped in `composer.json`.`views/`Twig templates`public/uploads`, `public/lang`Uploads disk root, translation files`var/`Writable: `cache/`, `logs/`, `templates/` (compiled Twig)Generators: `php bin/ions make:command|make:middleware|make:service-provider|make:resource|make:request|make:job|make:event|make:listener|make:test ` scaffold the corresponding class into `app/` (or `tests/` for `make:test`) — see `docs/console.md` in `ionzile/core`.

Frontend assets
---------------

[](#frontend-assets)

The skeleton ships no frontend tooling — pick a scaffold when you need one:

- `php bin/ions install:vue` — Vue 3 + Vite (dev server with HMR, hashed builds in `public/build/`, loaded via the `vite()` Twig function).
- `php bin/ions install:assets` — plain CSS/JS starters in `public/assets/`, linked via `asset()` with filemtime cache-busting. No node required.

See `docs/assets.md` in `ionzile/core`.

Testing
-------

[](#testing)

The skeleton ships runnable test scaffolding: `pestphp/pest` in `require-dev`, a `phpunit.xml` pointing at `tests/`, and `tests/ExampleTest.php`. Run the suite with `vendor/bin/pest` (or `composer test`).

The framework ships a host-app test kit: subclass `Ions\Testing\TestCase`, point `$basePath` at this directory, and drive the full HTTP stack in-process (no web server). See `docs/testing.md` in `ionzile/core` for the full guide.

```
final class PingTest extends \Ions\Testing\TestCase
{
    protected string $basePath = __DIR__ . '/..';   // app root (from tests/)

    public function test_ping(): void
    {
        $this->get('/api/ping')
            ->assertOk()
            ->assertJsonPath('data.message', 'pong');
    }
}
```

`actingAs($userIdOrUser)` issues a real JWT for protected `/api` routes — it requires `APP_KEY` (≥ 32 bytes) in the `.env` used by your tests.

Test fakes ship with the kit: `Queue::fake()`, `Event::fake()`, `Storage::fake()` and `Mail::fake()` swap the real service for a recorder with assertion helpers (`assertDispatched`, `assertFired`, `assertStored`, `assertSent`, …) — see the Fakes section of `docs/testing.md`.

Production notes
----------------

[](#production-notes)

- Set `APP_DEBUG=false` and run `php bin/ions optimize` (route + config caches).
- CORS is deny-by-default; configure `app.cors.origins` when serving cross-origin traffic.
- Review `UPGRADE-4.1.md` in `ionzile/core` for the 4.1 security defaults this skeleton embraces.
- Growing the app? `docs/best-practices.md` in `ionzile/core` is the opinionated structure guide this layout follows.

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance74

Regular maintenance activity

Popularity13

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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

Recently: every ~195 days

Total

35

Last Release

19d ago

Major Versions

3.3.15 → 4.0.02025-03-29

PHP version history (3 changes)3.0.0PHP ^8.0

4.0.0PHP ^8.2

4.6.0PHP &gt;=8.3

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/20045549?v=4)[Taha](/maintainers/tahaDeveloper)[@tahadeveloper](https://github.com/tahadeveloper)

---

Top Contributors

[![tahadeveloper](https://avatars.githubusercontent.com/u/20045549?v=4)](https://github.com/tahadeveloper "tahadeveloper (58 commits)")

---

Tags

phpsymfonyframeworkboilerplateilluminateSkeletonstarterionzileions

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/ionzile-ions/health.svg)

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

###  Alternatives

[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.9M388](/packages/easycorp-easyadmin-bundle)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M733](/packages/sylius-sylius)[laravel/framework

The Laravel Framework.

34.8k543.8M19.9k](/packages/laravel-framework)[shopware/platform

The Shopware e-commerce core

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

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.8M505](/packages/pimcore-pimcore)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

585.6M562](/packages/shopware-core)

PHPackages © 2026

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