PHPackages                             luany/luany - 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. luany/luany

ActiveProject[Framework](/categories/framework)

luany/luany
===========

Official application skeleton for the Luany Framework — AST-compiled PHP MVC with an explicit request lifecycle and zero-regex template engine.

v1.1.2(2mo ago)017MITPHPPHP &gt;=8.2CI passing

Since Mar 6Pushed 2mo agoCompare

[ Source](https://github.com/luany-ecosystem/luany)[ Packagist](https://packagist.org/packages/luany/luany)[ Docs](https://github.com/luany-ecosystem/luany)[ RSS](/packages/luany-luany/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (2)Dependencies (6)Versions (17)Used By (0)

luany/luany
===========

[](#luanyluany)

Official application skeleton for the Luany Framework.

[![PHP](https://camo.githubusercontent.com/b62a93fb4f213eea83a8e52bb4c5461696e4a6b91d7452ce2487abfd70659c7b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d3737374242343f7374796c653d666c61742d737175617265266c6f676f3d706870)](https://php.net)[![Framework](https://camo.githubusercontent.com/f06bda0955853548a0f16df9a2ecaba9cc86aa352c98b58d56396a389720edcb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c75616e792532466672616d65776f726b2d76312e302d3542333137313f7374796c653d666c61742d737175617265)](https://packagist.org/packages/luany/framework)[![License](https://camo.githubusercontent.com/dca48edac8d51e3d1df637408887673bdcb96f46d88cd0101621d9d6955a7289/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d4536383734413f7374796c653d666c61742d737175617265)](LICENSE)

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

[](#requirements)

- PHP 8.2+
- Composer 2.0+
- Node.js (required for live reload via `luany dev`)

Installation
------------

[](#installation)

```
composer global require luany/cli
luany new my-app
cd my-app
```

Or directly via Composer:

```
composer create-project luany/luany my-app
cd my-app
```

Getting started
---------------

[](#getting-started)

```
# 1. Configure your database
#    Edit DB_HOST, DB_NAME, DB_USER, DB_PASS in .env

# 2. Verify your environment
luany doctor

# 3. Run migrations
luany migrate

# 4. Install Node.js dependencies (required for live reload)
npm install
```

Development
-----------

[](#development)

```
luany dev
```

Starts the **Luany Dev Engine (LDE)** — PHP server + WebSocket live reload. Open `http://localhost:8000`.

> Use `luany serve` for a plain PHP server without live reload.

luany dev
---------

[](#luany-dev)

```
luany dev
luany dev localhost 8080          # custom host/port
luany dev localhost 8000 35730    # custom WebSocket port
```

ProcessAddressRolePHP built-in server`http://localhost:8000`Serves the application directlyWebSocket server`ws://localhost:35729`Delivers reload signals to the browser### Live reload strategy

[](#live-reload-strategy)

File changedAction`*.css`Inject — updates `` href with cache-buster. No page reload.`*.lte` / `*.php` / `*.js`Full page reload### Requirements

[](#requirements-1)

- Node.js installed and available on `PATH`
- `npm install` run inside the project
- `APP_ENV=development` in `.env`

### How it works

[](#how-it-works)

```
Browser ←──────────────────→ PHP   (port 8000) — direct, no proxy
Browser ←── WebSocket ──────→ Node (port 35729) — reload signals only

```

`DevMiddleware` intercepts every HTML response and appends the LDE browser client script. The client connects to the WebSocket server started by `luany dev` and applies changes as they arrive.

Directory structure
-------------------

[](#directory-structure)

```
my-app/
├── app/
│   ├── Controllers/
│   ├── Exceptions/
│   ├── Http/
│   │   ├── Kernel.php
│   │   └── Middleware/
│   ├── Models/
│   ├── Providers/
│   └── Support/
├── bootstrap/
│   └── app.php
├── config/
│   ├── app.php
│   └── mail.php
├── database/
│   └── migrations/
│   └── seeders/
├── lang/
│   ├── en.php
│   └── pt.php
├── public/
│   ├── index.php
│   └── assets/
├── routes/
│   └── http.php
├── storage/
│   ├── cache/views/
│   └── logs/
├── views/
│   ├── components/
│   ├── layouts/
│   └── pages/
├── .env.example
└── composer.json

```

Key concepts
------------

[](#key-concepts)

**Routing** — defined in `routes/http.php`:

```
Route::get('/', [HomeController::class, 'index']);
Route::get('/users/{id}', [UserController::class, 'show']);
```

**Controllers** — extend the base `Controller`:

```
class HomeController extends Controller
{
    public function index(Request $request): string
    {
        return view('pages.home', compact('data'));
    }
}
```

**Views** — LTE template engine, stored in `views/`:

```
@extends('layouts.main')

@section('title')My Page@endsection

@section('content')
    {{ $title }}
@endsection

```

**Migrations** — in `database/migrations/`:

```
class CreateUsersTable extends Migration
{
    public function up(\PDO $pdo): void
    {
        $pdo->exec("CREATE TABLE IF NOT EXISTS `users` (...)");
    }

    public function down(\PDO $pdo): void
    {
        $pdo->exec("DROP TABLE IF EXISTS `users`");
    }
}
```

**Models** — ActiveRecord base:

```
class User extends Model
{
    protected string $table   = 'users';
    protected array $fillable = ['name', 'email', 'password'];
    protected array $hidden   = ['password'];
}
```

CLI reference
-------------

[](#cli-reference)

```
luany make:controller       # scaffold controller
luany make:model            # scaffold model
luany make:migration        # generate migration file
luany make:seeder           # scaffold seeder class
luany db:seed                     # run database seeders
luany migrate:fresh --seed        # drop, migrate and seed
luany make:middleware       # scaffold middleware
luany make:view  [type]     # create LTE view
luany make:feature          # scaffold full CRUD feature
luany make:request          # scaffold form request class
luany make:test             # scaffold PHPUnit test class
luany route:list                  # list all registered routes
luany migrate                     # run pending migrations
luany migrate:status              # show migration status
luany migrate:rollback            # rollback last batch
luany migrate:fresh               # drop all and re-migrate
luany key:generate                # regenerate APP_KEY
luany cache:clear                 # clear compiled views
luany doctor                      # environment health check
luany serve                       # start PHP server (no live reload)
luany dev                         # start dev server with live reload
```

Documentation
-------------

[](#documentation)

[docs.luany.dev](https://docs.luany.dev)

License
-------

[](#license)

MIT — see [LICENSE](LICENSE).

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance86

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

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

Total

14

Last Release

73d ago

Major Versions

v0.2.5 → v1.0.02026-03-23

PHP version history (2 changes)v0.1.0PHP &gt;=8.1

v1.0.0PHP &gt;=8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/192051935?v=4)[António Ngola - \*\*Software Engineer\*\*](/maintainers/Ngola-Programador-Full-Stack)[@Ngola-Programador-Full-Stack](https://github.com/Ngola-Programador-Full-Stack)

---

Top Contributors

[![antoniongoladev-design](https://avatars.githubusercontent.com/u/264429300?v=4)](https://github.com/antoniongoladev-design "antoniongoladev-design (51 commits)")

---

Tags

phpframeworkmvcastSkeletonlteluany

###  Code Quality

TestsPHPUnit

### Embed Badge

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

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

###  Alternatives

[mirekmarek/php-jet

PHP Jet is modern, powerful, real-life proven, really fast and secure, small and light-weight framework for PHP8 with great clean and flexible modular architecture containing awesome developing tools. No magic, just clean software engineering.

241.3k](/packages/mirekmarek-php-jet)

PHPackages © 2026

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