PHPackages                             fnlla/framework - 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. fnlla/framework

ActiveLibrary[Framework](/categories/framework)

fnlla/framework
===============

Fnlla - AI-assisted PHP framework

00[5 PRs](https://github.com/fnlla/framework/pulls)PHPCI failing

Since Apr 26Pushed 1w agoCompare

[ Source](https://github.com/fnlla/framework)[ Packagist](https://packagist.org/packages/fnlla/framework)[ RSS](/packages/fnlla-framework/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (4)DependenciesVersions (9)Used By (0)

**FNLLA (FINELLA)**

[![Developed by TechAyo](https://camo.githubusercontent.com/69ef6c3b5b3b0960201422da01b6d979de2564baf4e87ee90daddd0600102832/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446576656c6f70656425323062792d5465636841796f2d6635396530623f7374796c653d666c61742d737175617265266c6162656c436f6c6f723d66393733313626636f6c6f723d666163633135)](https://techayo.co.uk)[![Latest Release](https://camo.githubusercontent.com/f4792b697d6d52b399dbafc8fa875179f2dff8e308991b017db6d2c6347df2dc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c617465737425323052656c656173652d332e302e362d3232633535653f7374796c653d666c61742d737175617265266c6162656c436f6c6f723d306561356539)](https://github.com/fnlla/framework/releases)

fnlla (finella) is an AI-assisted (optional), modular PHP framework by TechAyo (techayo.co.uk). The core framework runs fully without AI. AI is a first-class, opt-in layer: governance, routing, telemetry, and autonomous insights are built in, but remain optional and safe by default.

**Status:** Public release (proprietary license).

**OWNERSHIP****-** Author: [TechAyo](https://techayo.co.uk)**-** Project Manager: Marcin Kordyaczny

**ABOUT**fnlla (finella) Framework is a production-focused PHP platform for teams that want a clear core architecture, optional modular capabilities, predictable operations at scale, and AI capabilities that remain opt-in by design.

**Core idea:** fnlla (finella) Framework + companion starter repository Starter application lives in the `fnlla/fnlla` repository. Release notes for framework changes are summarised in `CHANGELOG.md`.

**WHAT IS FNLLA (FINELLA)?****-** **fnlla (finella) Framework**: minimal, modern PHP core focused on HTTP, routing, container, config, and error handling. **-** Modular ecosystem of optional packages (auth, database, ORM, cache, queue, mail, docs, etc.). **-** Starter app distributed in a separate repository (`fnlla/fnlla`). **-** Optional AI stack with RAG, governance, and deterministic autonomous insights.

**AI POSITIONING****-** AI is optional and never required to boot, run, or deploy a fnlla (finella) app. **-** The AI layer is designed to improve workflow, quality, and documentation without blocking delivery.

**AI BOUNDARIES (DOES)****-** Drafts, summarizes, and proposes changes with explicit human review. **-** Runs deterministic insights without external providers when configured. **-** Applies governance (policy, redaction, routing, telemetry) when enabled.

**AI BOUNDARIES (DOES NOT)****-** Write or apply changes automatically without preview/confirmation. **-** Require network calls or provider keys to operate the core framework. **-** Replace engineering ownership or the SDLC decision process.

**WHY PHP FOR FNLLA (FINELLA)?**Because it is the fastest path to reliable, enterprise web delivery with a low barrier to entry and predictable total cost of ownership.

**PERFORMANCE AND OBSERVABILITY****-** Warm kernel support for long-running servers (`HttpKernel::boot()`). **-** Tracing headers by default: `X-Request-Id`, `X-Trace-Id`, `X-Span-Id` (configurable).

**STABILITY AND SUPPORT****-** Support policy: `documentation/src/operations.md`. **-** Current supported line: 3.0.x (active support until 2027-04-30, security-only until 2028-04-30). **-** SemVer + deprecation policy (breaking changes only in major versions). **-** Deprecations registry + migration notes: `documentation/src/operations.md`.

**NAME ORIGIN AND TECHNICAL SLUG****-** Product name: `fnlla (finella)` (name origin: fnlla (finella) Gardens, Dundee, UK). **-** Technical slug: `fnlla` (`github.com/fnlla`, `fnlla.co.uk`). **-** Why `fnlla (finella)`: short ASCII-only identifier, easy to type in CLI/paths, and stable across package/repository naming.

**ROADMAP****-** Public roadmap in `documentation/src/operations.md`.

**DEVELOPER EXPERIENCE****-** CLI-first workflow, smoke tests, debugbar, and lightweight testing helpers. **-** Task-oriented docs and feature index: `documentation/src/developer-experience.md`. **-** Package catalog: `documentation/src/packages.md`. **-** ORM ergonomics spec: `documentation/src/framework.md`.

**ORM ERGONOMICS (QUICK EXAMPLE)**

```
$active = User::whereHas('posts', fn ($q) => $q->where('status', 'published'))
    ->withCount('posts')
    ->latest()
    ->take(10)
    ->get();
```

**QUICK START (HARNESS)**

```
git clone https://github.com/fnlla/framework.git framework
cd framework/tools/harness
copy .env.example .env
composer install
php bin/fnlla db:bootstrap
php -S 127.0.0.1:8000 -t public
```

For production/stable installs (outside monorepo dev), use:

```
composer install --no-dev --prefer-dist --optimize-autoloader
```

Open: **-** Product App: `http://127.0.0.1:8000/`

**STARTER****-** Starter application repository: `https://github.com/fnlla/fnlla`**-** Public bootstrap command: `composer create-project fnlla/fnlla my-app`

Docs UI and docs generation: **-** Docs home: `GET /docs`

```
php bin/fnlla docs:generate
php bin/fnlla docs:generate --publish
```

CLI and testing:

```
php bin/fnlla list
php bin/fnlla routes:cache
composer run smoke
```

CLI/runtime note: **-** In local/dev environments, framework smoke scripts and harness CLI auto-reexec to PHP 8.5.5 when started with any other PHP binary. **-** In CI, any PHP 8.5.x runtime is accepted. **-** Override the preferred binary with `Fnlla_PHP_BIN` (or `Fnlla_PHP85_BIN`) pointing to PHP 8.5.5. **-** `composer run serve` in `tools/harness` uses the same guard; bind can be changed with `Fnlla_DEV_HOST` / `Fnlla_DEV_PORT`.

**HELLO WORLD ROUTE****-** Route: `tools/harness/routes/web.php`**-** Controller: `tools/harness/src/Controllers/HomeController.php`**-** View: `tools/harness/resources/views/pages/home.php`

```
$router->get('/', [HomeController::class, 'index']);
```

**READINESS ENDPOINT****-** Route: `GET /ready`**-** Controller: `tools/harness/src/Controllers/HealthController.php`**-** Service: `tools/harness/src/Services/AppReadinessService.php`

Returns `200` when dependencies are ready, and `503` otherwise.

**DOCUMENTATION****-** Getting Started: `documentation/src/getting-started.md`**-** Framework guide: `documentation/src/framework.md`**-** Packages catalog: `documentation/src/packages.md`**-** Operations &amp; governance: `documentation/src/operations.md`**-** Enterprise go-live checklist: `framework/docs/enterprise-go-live-checklist.md`**-** AI integrations: `documentation/src/ai-integrations.md`**-** Developer experience: `documentation/src/developer-experience.md`**-** Full index: `documentation/src/index.md`

**THIRD-PARTY NOTICES WORKFLOW**`THIRD_PARTY_NOTICES.md` is generated from available Composer lock files discovered by `scripts/ci/generate-third-party-notices.php` (currently sourced from `tools/harness/composer.lock`).

Use:

```
php scripts/ci/generate-third-party-notices.php
php scripts/ci/generate-third-party-notices.php --check
```

`--check` is used in CI and release gate to ensure notices stay in sync.

**ATTRIBUTION STANDARD**fnlla (finella) requires an Attribution Notice in your product source code or repository documentation. Use `NOTICE` as a template, for example: **-** "Built with the fnlla (finella) Framework and fnlla (finella) Components."

**REQUIREMENTS****-** PHP &gt;= 8.5 **-** Composer &gt;= 2

**LICENSE**See `LICENSE.md` at the repo root and per-package LICENSE files.

**MAINTAINER DISTRIBUTION PLAYBOOK**This section is the operational source for maintainers responsible for public package distribution and `composer create-project`.

**SOURCE OF TRUTH****-** `fnlla/framework` stays private and is the only source of truth. **-** Public distribution is served through `fnlla/packages` (single public package hub). **-** Starter repository is `fnlla/fnlla` and is public for `composer create-project fnlla/fnlla`. **-** Installer repository is `fnlla/installer` and provides `fnlla new`.

**PACKAGE SPLIT (PUBLIC VS PRIVATE)****-** Manifest file: `scripts/release/distribution-packages.json`**-** Print current split: `php scripts/release/list-distribution-packages.php`**-** Guard check: `php scripts/release/check-public-distribution.php`

Public core (`public_core`) currently includes: **-** `fnlla/framework`**-** `fnlla/ai`**-** `fnlla/audit`**-** `fnlla/deploy`**-** `fnlla/monitoring`**-** `fnlla/oauth`**-** `fnlla/standard`**-** `fnlla/queue`**-** `fnlla/scheduler`**-** `fnlla/mail`**-** `fnlla/ops`**-** `fnlla/pdf`**-** `fnlla/rbac`**-** `fnlla/search`**-** `fnlla/settings`**-** `fnlla/docs`**-** `fnlla/testing`**-** `fnlla/debugbar`

Private/pro (`private_pro`) currently includes optional modules not required by starter: **-** `fnlla/analytics`**-** `fnlla/content`**-** `fnlla/seo`**-** `fnlla/notifications`**-** `fnlla/webmail`**-** `fnlla/storage-s3`**-** `fnlla/stripe`**-** `fnlla/sentry`**-** `fnlla/tenancy`

Rule: packages required by starter (runtime and dev) must stay in `public_core`. Private registry is for optional pro add-ons only.

**PUBLIC PACKAGE HUB**Public package distribution lives in: **-** `fnlla/packages`**-** Composer metadata: `repository/packages.json`**-** Package archives: `repository/dist/*`**-** Composer URL used by starter: `https://raw.githubusercontent.com/fnlla/packages/main/repository`

**COMPOSER METADATA RULES (PUBLIC PACKAGE REPOS)****-** Keep valid package `name` in each package `composer.json` (for example `fnlla/ops`). **-** Do not set a fixed `version` in `composer.json`; versions come from Git tags. **-** Keep `extra.branch-alias.dev-main` aligned with the current release line (for example `3.0.x-dev`). **-** Keep dependency constraints aligned to the release line (for example `fnlla/framework:^3.0`).

**ONE-TIME PACKAGIST PUBLISH (PUBLIC PACKAGES)****-** Open Packagist account with org access. **-** Submit `https://github.com/fnlla/packages` if publishing hub metadata workflow, or submit per-package repository URLs used by your package strategy. **-** Confirm package names and versions resolve correctly. **-** Enable auto-update webhook/service in Packagist. **-** Verify all starter-required packages are installable from public sources. **-** Packagist reads `composer.json` from the repository root of the default branch. For `fnlla/framework`, keep the root `composer.json` present and aligned with `framework/composer.json`.

**ONE-TIME PACKAGIST PUBLISH (STARTER)****-** Ensure starter repo `fnlla/fnlla` is public. **-** Confirm starter `composer.json` contains only remote dependencies (no `path` repositories). **-** Submit `https://github.com/fnlla/fnlla` to Packagist as `fnlla/fnlla`. **-** Verify `composer create-project fnlla/fnlla my-app` resolves from Packagist.

**STARTER RULES (REQUIRED)****-** In `fnlla/fnlla`, keep only remote dependencies in `composer.json`. **-** Do not commit `composer.lock` in the starter template repo. **-** Local monorepo development may use `composer.dev.json` with `path` repositories, but this file is for maintainers only. **-** Use `composer run lock:check` in starter CI to reject local/path lock sources.

**RELEASE FLOW (REQUIRED EVERY RELEASE)****-** Tag in private source-of-truth monorepo: `git tag vX.Y.Z && git push origin vX.Y.Z`**-** Sync public package sources/artifacts into `fnlla/packages`. **-** Rebuild `repository/` metadata in `fnlla/packages` and publish to `main`. **-** Refresh Packagist package metadata (auto-hook or manual update). **-** Release starter (`fnlla/fnlla`) with aligned dependency constraints. **-** Validate public bootstrap: `composer create-project fnlla/fnlla my-app`**-** Validate install/boot in created app: `composer install && php bin/fnlla db:bootstrap`

**MAINTAINER CHECKLIST (SHORT)****-** Update code/docs in private `fnlla/framework`. **-** Run release gate + distribution checks. **-** Tag monorepo. **-** Sync/update `fnlla/packages` public sources. **-** Rebuild and publish `fnlla/packages/repository`. **-** Refresh/verify Packagist versions. **-** Release `fnlla/fnlla`. **-** Validate `composer create-project`.

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance64

Regular maintenance activity

Popularity0

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity19

Early-stage or recently created project

 Bus Factor1

Top contributor holds 95.7% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/23a73d9af8811556702d2675f6385306b6982c0a021fc25076e53b2a8fc24f13?d=identicon)[kordyaczny](/maintainers/kordyaczny)

---

Top Contributors

[![kordyaczny](https://avatars.githubusercontent.com/u/16237852?v=4)](https://github.com/kordyaczny "kordyaczny (44 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (2 commits)")

---

Tags

aiarchitecturefinellafnllaframeworkmodularphpprivate

### Embed Badge

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

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

###  Alternatives

[laravel/socialite

Laravel wrapper around OAuth 1 &amp; OAuth 2 libraries.

5.7k104.3M822](/packages/laravel-socialite)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k38.6M289](/packages/laravel-dusk)[pinguo/php-msf

Pinguo Micro Service Framework For PHP

1.7k4.2k](/packages/pinguo-php-msf)[nineinchnick/edatatables

Grid widget for the Yii Framework, wrapper for the DataTables jQuery plugin

173.2k](/packages/nineinchnick-edatatables)

PHPackages © 2026

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