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

ActiveProject[Framework](/categories/framework)

freeframe/freeframe
===================

FreeFrame is a lightweight PHP framework with a custom CLI, inspired by Laravel and CakePHP.

v2.6.1(1y ago)113MITPHPPHP &gt;=8.0

Since May 21Pushed 1y ago1 watchersCompare

[ Source](https://github.com/sagnikrivud/Free-Frame-Framework)[ Packagist](https://packagist.org/packages/freeframe/freeframe)[ RSS](/packages/freeframe-freeframe/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (13)Versions (13)Used By (0)

FreeFrame – A Lightweight PHP Framework
=======================================

[](#freeframe--a-lightweight-php-framework)

[![](./Public/assets/logo.webp)](./Public/assets/logo.webp)

FreeFrame is a lightweight, modular PHP framework inspired by Laravel and CakePHP, built for rapid development with minimal setup. It comes with its own powerful CLI tool named `free`, allowing you to scaffold components, manage your project structure, and streamline development.

---

### 🚀 Features

[](#-features)

- Custom CLI tool – free lets you create controllers, models, and run other useful commands.
- Easy to use – Designed to be lightweight and modular, FreeFrame is perfect for building your own web applications.
- Automatic routing – Route your requests easily to the correct controllers and methods.
- Environment handling – Use .env files for configuration, making it easy to manage different environments.

---

### System Compatibility

[](#system-compatibility)

- PHP 8.0
- Composer 2.0
- Apache (XAMPP, LAMP)
- PDO Driver
- MongoDB driver

### 🧱 Framework Structure

[](#-framework-structure)

```
my-app/
├── App/
│   ├── Controllers/
|   |── Middlewares/
│   ├── Models/
│   ├── Services/
│   └── Helpers/
├── config/
├── core/
|   ├── bootstrap.php
|   |── Router.php
├── public/
│   └── index.php
├── resources/
│   ├── pages/
│   └── assets/
├── routes/
│   └── route.php
├── storage/
│   ├── Logs/
|   ├── Public/
│   └── Cache/
|
├── .env
├── .env.example
├── free
├── Execute.sh
├── composer.json
└── README.md

```

### Implemented Features

[](#implemented-features)

```
✔ CLI (php free)

✔ Routing system (routes/route.php)

✔ Controllers (make:controller)

✔ Services (make:service)

✔ Models (make:model)

✔ Middleware (make:middleware)

✔ Logging system (error.log)

✔ log:clear and storage:link commands

✔ Route listing (route:list)

✔ Auto exception logging

✔ Basic MySQL & MongoDB integration setup

✔ Custom command generator (make:command)

✔ Debugger placeholder

✔ CLI server (php free serve)

```

### 🏚️ Namespace or Class not found issue resolved

[](#️-namespace-or-class-not-found-issue-resolved)

```
$ composer dump-autoload
```

### Publish Framework

[](#publish-framework)

- Tag latest commit with a semantic version:

```
$ git tag v1.0.0
$ git push origin v1.0.0
```

- Submit Framework repo at Packagist , then click on `Update`
- Create a blnak project `$ composer create-project freeframe/freeframe my-app ^2.5`
- Specify version `$ composer create-project freeframe/freeframe my-app "2.5"`
- Alter try `$ composer create-project freeframe/freeframe my-app --stability=dev`

### ✅ Install Symfony Console via Composer

[](#-install-symfony-console-via-composer)

1. Install

```
$ composer require symfony/console
```

2. Create CLI Entry File

```
framework/
    ├── ignite_file        ← this is CLI
    ├── composer.json
    ├── vendor/

```

### 🗂️ Create a Project

[](#️-create-a-project)

```
$ composer create-project freeframe/freeframe my-app --stability=dev
```

### Start Server

[](#start-server)

```
$ php free serve
```

> Open `http://localhost:8000/`

### List of Commands

[](#list-of-commands)

> Check version

```
$ php free --version
```

```
FreeFrame CLI v1.0.0
```

### Create Controller

[](#create-controller)

```
$ php free make:controller HomeController
```

> `App\Controllers\New-Controller`

### Create Service Classes under App/Services

[](#create-service-classes-under-appservices)

```
$ php free make:service UserService
```

### Create Model

[](#create-model)

```
$ php free make:model User
```

> Created at `App/Models` folder

### Clear Error logs

[](#clear-error-logs)

```
$ php free log:clear
```

### Create Storage link in public

[](#create-storage-link-in-public)

```
$ php free storage:link
```

### See Available commands

[](#see-available-commands)

```
$ php free help
```

[![Help](Public/assets/helps.PNG)](Public/assets/helps.PNG)

### List of Routes

[](#list-of-routes)

```
$ php free route:list
```

### Create Middleware

[](#create-middleware)

```
$ php free make:middleware AuthMiddleware
```

### Connect database (Default Support `Mysql` &amp; `MongoDB`)

[](#connect-database-default-support-mysql--mongodb)

> At Controller or Service Layer

```
use Core\Database;

$db = (new Database())->getConnection();

// Example RDB query
if ($db instanceof PDO) {
    $stmt = $db->query("SELECT * FROM users");
    $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

// Example MongoDB query:
if ($db instanceof \MongoDB\Database) {
    $collection = $db->users;
    $users = $collection->find()->toArray();
}
```

### Install Mongodb extension for PHP

[](#install-mongodb-extension-for-php)

> Download extension for Windows from here according to PHP version: [Click](https://pecl.php.net/package/mongodb/2.0.0/windows)Check thread safety or not

```
$ php -i > phpinfo.txt
```

> Search `Thread Safety`, 💡 If Thread Safety is enabled, you need the TS version of the MongoDB DLL. If it's disabled, download the NTS version. Place the downloaded .dll into: `C:\xampp\php\ext`Open your php.ini file `(in C:\xampp\php)` and add: `extension=mongodb`Restart Apache using the XAMPP control panel.

```
extension=php_mongodb.dll
```

### Install Cassandra DB for PHP

[](#install-cassandra-db-for-php)

> Download and install cassndra dll (windows) file from here: [Click](https://pecl.php.net/package/cassandra/1.3.2/windows)

> Unzip the Zip and take `php_cassandra.dll` file and then place it on `C:\xampp\php\ext`, after that Open Open your php.ini file `(in C:\xampp\php)` and add: `extension=php_cassandra.dll`

- For linux

```
$ sudo pecl install cassandra
```

Add this extension at php.ini file `(in C:\xampp\php)`

```
extension=cassandra.so
```

### Migrate Tables from RDB

[](#migrate-tables-from-rdb)

```
$ php free migrate
```

### Create Custom Request

[](#create-custom-request)

```
$ php free make:request CommonRequest
```

```
use Core\Http\Request;
use Core\Http\Response;
use App\Requests\CommonRequest;

public function store()
{
    $request = new Request();
    $userRequest = new CommonRequest();

    if (!$userRequest->validate($request->all())) {
        return Response::json(['errors' => $userRequest->errors()], 422)->send();
    }

    // Proceed with storing user...

    return Response::json(['message' => 'User created successfully']);
}
```

### 👤 Auth Scaffolding feature (JWT Authentication)

[](#-auth-scaffolding-feature-jwt-authentication)

```
$ php free auth:install
```

> `AuthController`, `AuthMiddleware` will created `JWT secret` will append in `.env`

### 🏡 ORM Relationships

[](#-orm-relationships)

```
use App\Models\Profile;
use App\Models\Post;
use App\Models\User;

public function profileDetails()
{
    return $this->hasOnlyOne(Profile::class, 'user_id');
}

public function posts()
{
    return $this->hasManyMore(Post::class, 'user_id');
}

public function author()
{
    return $this->belongsToOnly(User::class, 'user_id');
}
```

### ⛯ Create Routes

[](#-create-routes)

> At routes/route.php

```
use App\Controllers\HomeController;

$router->get('/', 'HomeController@index');
```

> Define Routes with Prefixes

```
$router->group(['prefix' => '/api'], function ($router) {
    $router->get('/users', 'UserController@index');
    $router->post('/login', 'AuthController@login');
});

$router->group(['prefix' => '/admin'], function ($router) {
    $router->get('/dashboard', 'AdminController@dashboard');
    $router->post('/settings', 'AdminController@saveSettings');
});
```

This will shown as

```
/api/users

/api/login

/admin/dashboard

/admin/settings

```

### 📟 Session Manage

[](#-session-manage)

```
use Core\Facades\Session;

//Set a Key
Session::set($key, $value);
// Get a Key Value
Session::get($key);
//Remove Key
Session::forget($key);
//Check session has a particular key
Session::has($key);
//Clear all Session
Session::flush();
```

### 🖥️ PHP Curl Operation

[](#️-php-curl-operation)

```
use Core\Http\HttpRemote;

(array) $headers;
(array) $data;

$http = new HttpRemote();
//Fetch a remote URL
$http->get($url, $headers);
// Post data to Remote URL
$http->post($url, $data, $headers);
// Update to Remote URL
$http->put($url, $data, $headers);
//Delete request
$http->delete($url, $data, $headers);
```

### 🤺 Global Middlewares

[](#-global-middlewares)

> `App/Middleware/RateLimitMiddleware`

```
// Maximum requests allowed per time window
protected int $maxRequests = 10;
// Time window duration in seconds (e.g., 60 seconds = 1 minute)
protected int $timeWindow = 60;
```

> `App/Middleware/AuthMiddleware`

```
public function handle($request, Closure $next)
{
    // Add your logic here

    return $next($request);
}
```

### 🗄️ Json Resource Class

[](#️-json-resource-class)

> Create a Custom Json Resource file Ex: `UserResource` under `App\Resources`

```
namespace App\Resources;

use App\Resources\JsonResource;

class UserResource extends JsonResource
{
    public function toArray(): array
    {
        return [
            'user_id' => $this->resource['id'],
            'full_name' => $this->resource['name'],
            'email' => $this->resource['email'],
            // Add more formatted fields here
        ];
    }
}
// Use in Controller
$userResource = new UserResource($user);
$userResource->send();
```

### 🗃️ Maintain Migration file

[](#️-maintain-migration-file)

> Create a `users` table

```
$ php free make:migration create_users_table
```

> Migrate the db

```
$ php free migrate
```

> Drop a table

```
$ php free make:migration drop_orders_table
```

### Language manage

[](#language-manage)

> Add language files at `lang` directory in array format, and then set the desired lang code at `config/app.php`

```
lang('lang_key_name');
```

### 📧 Mailing system

[](#-mailing-system)

```
use Core\Mail\Mail;

$mailer = new Mail();
$mailer->to('recipient@example.com', 'John Doe')
     ->subject('Welcome to FreeFrame!')
     ->body('Hello from FreeFrameThis is your welcome email.')
     ->send();
```

### 📮 IMAP (Incoming Mail Access Protocol) Feature

[](#-imap-incoming-mail-access-protocol-feature)

[Docuemntation:](https://github.com/Webklex/php-imap)

> Package used

```
$ composer require webklex/php-imap
```

Fill the `.env`

```
IMAP_HOST=imap.gmail.com
IMAP_PORT=993
IMAP_ENCRYPTION=ssl
IMAP_VALIDATE_CERT=true
IMAP_USERNAME=your_email@gmail.com
IMAP_PASSWORD=your_password
```

Usage

```
use Core\Mail\ImapClient;

$client = new ImapClient();
$mailbox = $client->getFolders();
$mails = $client->getInboxMessages();
$spambox = $client->getSpamMessages();
```

### 💰 Payments supported

[](#-payments-supported)

1. [Stripe](https://docs.stripe.com/api)
2. [Paypal](https://developer.paypal.com/api/rest/)
3. [Razorpay](https://razorpay.com/docs/api/)
4. [Square payment](https://developer.squareup.com/docs)

- Use

```
use Payments\PaymentManager;
use Payments\Gateways\StripeGateway;
use Payments\Gateways\PaypalGateway;
use Payments\Gateways\RazorpayGateway;
use Payments\Gateways\SquareGateway;
```

- Define Payment gateway name at `.env`

```
DEFAULT_PAYMENT_GATEWAY=stripe #razorpay #paypal #square
```

- Fill the details according to Payment Gateway

```
# Stripe
STRIPE_KEY=''
STRIPE_SECRET=''

# Razorpay
RAZORPAY_KEY=''
RAZORPAY_SECRET=''

# PayPal
PAYPAL_CLIENT_ID=''
PAYPAL_SECRET=''

# Square
SQUARE_ACCESS_TOKEN=''
SQUARE_ENV='sandbox'
```

🔁 Queue Worker &amp; Queue Job

```
$ php free make:job JobClassName
```

- Run Queue Job

```
$ php free queue:work
```

- Base Queue class

```
\core\Jobs\BaseJob.php
```

### AWS Services supported

[](#aws-services-supported)

- SQS (Simple Queue Service)
    - `\core\AWS\SQSService.php`

    ```
    use Core\AWS\SQSService;
    $awsService = new SQSService();
    $awsService->sendMessage($message);
    ```
- SES (Simple Email Service)
    - `\core\AWS\SESService.php`

    ```
    use Core\AWS\SESService;
    $awsService = new SESService();
    $awsService->sendEmail($to, $subject, $htmlBody);
    ```
- S3 (Simple Storage Service)
    - `\core\AWS\S3Service.php`

    ```
    use Core\AWS\S3Service;
    $awsService = new S3Service();
    $awsService->upload($key, $body, $contentType);
    $awsService->fetch($key, $type); //$type = 'application/octet-stream'
    ```
- SNS (Simple notification system)
    - `\core\AWS\SNSService.php`

    ```
    use Core\AWS\SNSService;
    $awsService = new SNSService();
    $awsService->publish($message);
    $awsService->event($eventName, $data);
    ```
- EFS (Elastic File System)
    - `\core\AWS\EFSService.php`

    ```
    use Core\AWS\EFSService;
    $awsService = new EFSService();
    $awsService->createFileSystem($creationToken);
    $awsService->describeFileSystems($fileSystemId);
    $awsService->deleteFileSystem($fileSystemId);
    ```

> Fill the details at `.env`

```
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_DEFAULT_REGION=ap-south-1

AWS_S3_BUCKET=your-bucket-name
AWS_SQS_QUEUE_URL=https://sqs.ap-south-1.amazonaws.com/xxxx/your-queue
AWS_SNS_TOPIC_ARN=arn:aws:sns:ap-south-1:xxxx:your-topic
AWS_SES_EMAIL=verified@yourdomain.com
```

### 👏 Credit

[](#-credit)

Built with ❤️ by **[Sagnik Dey](https://github.com/sagnikrivud)**

I'm a self-taught programmer and I'm open to any kind of feedback/suggestions. This framework is a hobby project and I'm doing it in my free time. If you find any bug or something that you think should be improved please open an issue or make a pull request.

I'm also a big fan of the Laravel framework, and I've been inspired by it, so if you see something that looks like Laravel, is because I like how they do things. But, I'm not trying to copy them, I'm just trying to do something similar but with my own style.

💻 Tech Stack

[![CSS3](https://camo.githubusercontent.com/be768d5dc55def92d40f8d8c34ee3cb0116e6ae052562ce707f0cb2f184a7f58/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f637373332d2532333135373242362e7376673f7374796c653d706c6173746963266c6f676f3d63737333266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/be768d5dc55def92d40f8d8c34ee3cb0116e6ae052562ce707f0cb2f184a7f58/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f637373332d2532333135373242362e7376673f7374796c653d706c6173746963266c6f676f3d63737333266c6f676f436f6c6f723d7768697465) [![PHP](https://camo.githubusercontent.com/67feaa526d7b1b6d187c78b71394c1ffedf9951024390d90e5e228e71d6b4c53/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d2532333737374242342e7376673f7374796c653d706c6173746963266c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/67feaa526d7b1b6d187c78b71394c1ffedf9951024390d90e5e228e71d6b4c53/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d2532333737374242342e7376673f7374796c653d706c6173746963266c6f676f3d706870266c6f676f436f6c6f723d7768697465) [![HTML5](https://camo.githubusercontent.com/cc2a077244542d62c603e7227774a606b745286570dbb5ba0b6ab8fdd9a87962/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f68746d6c352d2532334533344632362e7376673f7374796c653d706c6173746963266c6f676f3d68746d6c35266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/cc2a077244542d62c603e7227774a606b745286570dbb5ba0b6ab8fdd9a87962/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f68746d6c352d2532334533344632362e7376673f7374796c653d706c6173746963266c6f676f3d68746d6c35266c6f676f436f6c6f723d7768697465) [![JavaScript](https://camo.githubusercontent.com/2b1dcb3942772832212abad4535fc3621ff825a59b542a7bbdf2fad766e8abc2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6176617363726970742d2532333332333333302e7376673f7374796c653d706c6173746963266c6f676f3d6a617661736372697074266c6f676f436f6c6f723d253233463744463145)](https://camo.githubusercontent.com/2b1dcb3942772832212abad4535fc3621ff825a59b542a7bbdf2fad766e8abc2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6176617363726970742d2532333332333333302e7376673f7374796c653d706c6173746963266c6f676f3d6a617661736372697074266c6f676f436f6c6f723d253233463744463145) [![AWS](https://camo.githubusercontent.com/dc810211b7d572640bd585e8649992ddf9bd04583499c0150a307ac8a353e0d7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4157532d2532334646393930302e7376673f7374796c653d706c6173746963266c6f676f3d616d617a6f6e2d617773266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/dc810211b7d572640bd585e8649992ddf9bd04583499c0150a307ac8a353e0d7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4157532d2532334646393930302e7376673f7374796c653d706c6173746963266c6f676f3d616d617a6f6e2d617773266c6f676f436f6c6f723d7768697465) [![Vue.js](https://camo.githubusercontent.com/6b4bb3ddcdc7e3c88bbe9fb1fe206f893884abbd254855c628550d5eb74e3e8c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7675656a732d2532333335343935652e7376673f7374796c653d706c6173746963266c6f676f3d767565646f746a73266c6f676f436f6c6f723d253233344643303844)](https://camo.githubusercontent.com/6b4bb3ddcdc7e3c88bbe9fb1fe206f893884abbd254855c628550d5eb74e3e8c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7675656a732d2532333335343935652e7376673f7374796c653d706c6173746963266c6f676f3d767565646f746a73266c6f676f436f6c6f723d253233344643303844) [![Vuetify](https://camo.githubusercontent.com/ccf817dc9ea4cba6e6912cbbf8da7a3efac492b39927de1670267207bd8eede5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f567565746966792d3138363743303f7374796c653d706c6173746963266c6f676f3d76756574696679266c6f676f436f6c6f723d414544444646)](https://camo.githubusercontent.com/ccf817dc9ea4cba6e6912cbbf8da7a3efac492b39927de1670267207bd8eede5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f567565746966792d3138363743303f7374796c653d706c6173746963266c6f676f3d76756574696679266c6f676f436f6c6f723d414544444646) [![NPM](https://camo.githubusercontent.com/edb8c1b6d1c81d9a10cc5ea9c74dfe6be417454ae396162e6a2908ab2419cd5e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e504d2d2532333030303030302e7376673f7374796c653d706c6173746963266c6f676f3d6e706d266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/edb8c1b6d1c81d9a10cc5ea9c74dfe6be417454ae396162e6a2908ab2419cd5e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e504d2d2532333030303030302e7376673f7374796c653d706c6173746963266c6f676f3d6e706d266c6f676f436f6c6f723d7768697465) [![jQuery](https://camo.githubusercontent.com/c46ddc16f8589ac76d9dc5c09ffd841982beaefef87e6296f7a766e9d1e0e783/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a71756572792d2532333037363941442e7376673f7374796c653d706c6173746963266c6f676f3d6a7175657279266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/c46ddc16f8589ac76d9dc5c09ffd841982beaefef87e6296f7a766e9d1e0e783/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a71756572792d2532333037363941442e7376673f7374796c653d706c6173746963266c6f676f3d6a7175657279266c6f676f436f6c6f723d7768697465) [![Express.js](https://camo.githubusercontent.com/87015d0289623a0d05799eea8fa1836936e582e4b94745c0c3fad525726ff38f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f657870726573732e6a732d2532333430346435392e7376673f7374796c653d706c6173746963266c6f676f3d65787072657373266c6f676f436f6c6f723d253233363144414642)](https://camo.githubusercontent.com/87015d0289623a0d05799eea8fa1836936e582e4b94745c0c3fad525726ff38f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f657870726573732e6a732d2532333430346435392e7376673f7374796c653d706c6173746963266c6f676f3d65787072657373266c6f676f436f6c6f723d253233363144414642) [![Laravel](https://camo.githubusercontent.com/a14536a7a451993a1b1f103b0203d19badab45aedefc80c0582b59a5576e7d47/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/a14536a7a451993a1b1f103b0203d19badab45aedefc80c0582b59a5576e7d47/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465) [![NuxtJS](https://camo.githubusercontent.com/2c60557605bc43faeead7698ac605eac420f6399b15d89bb1f821107571a4686/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e7578742d626c61636b3f7374796c653d706c6173746963266c6f676f3d6e7578742e6a73266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/2c60557605bc43faeead7698ac605eac420f6399b15d89bb1f821107571a4686/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e7578742d626c61636b3f7374796c653d706c6173746963266c6f676f3d6e7578742e6a73266c6f676f436f6c6f723d7768697465) [![Socket.io](https://camo.githubusercontent.com/46a627e81a1ccabd390237b1dde0f6ac4d6f0b6cb5149c351bb18d7796943d41/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536f636b65742e696f2d626c61636b3f7374796c653d706c6173746963266c6f676f3d736f636b65742e696f266261646765436f6c6f723d303130313031)](https://camo.githubusercontent.com/46a627e81a1ccabd390237b1dde0f6ac4d6f0b6cb5149c351bb18d7796943d41/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536f636b65742e696f2d626c61636b3f7374796c653d706c6173746963266c6f676f3d736f636b65742e696f266261646765436f6c6f723d303130313031) [![Apache](https://camo.githubusercontent.com/4113ea48e9658705f8c2852c1c60716050ce491fb3428475089885cbe3dbd7ba/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6170616368652d2532334434323032392e7376673f7374796c653d706c6173746963266c6f676f3d617061636865266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/4113ea48e9658705f8c2852c1c60716050ce491fb3428475089885cbe3dbd7ba/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6170616368652d2532334434323032392e7376673f7374796c653d706c6173746963266c6f676f3d617061636865266c6f676f436f6c6f723d7768697465) [![MariaDB](https://camo.githubusercontent.com/e70311d9572dbd0ffdcec91bc54c401993c7b9f4f60a9b1d0afc09031e38994c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6172696144422d3030333534353f7374796c653d706c6173746963266c6f676f3d6d617269616462266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/e70311d9572dbd0ffdcec91bc54c401993c7b9f4f60a9b1d0afc09031e38994c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6172696144422d3030333534353f7374796c653d706c6173746963266c6f676f3d6d617269616462266c6f676f436f6c6f723d7768697465) [![MongoDB](https://camo.githubusercontent.com/10a0a89ceb1091c1423334e09d55fb583dc6c3a32ea2b23d712e6c2cce36354c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f6e676f44422d2532333465613934622e7376673f7374796c653d706c6173746963266c6f676f3d6d6f6e676f6462266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/10a0a89ceb1091c1423334e09d55fb583dc6c3a32ea2b23d712e6c2cce36354c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6f6e676f44422d2532333465613934622e7376673f7374796c653d706c6173746963266c6f676f3d6d6f6e676f6462266c6f676f436f6c6f723d7768697465) [![MySQL](https://camo.githubusercontent.com/f3da1d19e43aaf1e52e12fee11acc670ba5e596a4db31b240edc8a44d378a7f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d7973716c2d2532333030662e7376673f7374796c653d706c6173746963266c6f676f3d6d7973716c266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/f3da1d19e43aaf1e52e12fee11acc670ba5e596a4db31b240edc8a44d378a7f1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d7973716c2d2532333030662e7376673f7374796c653d706c6173746963266c6f676f3d6d7973716c266c6f676f436f6c6f723d7768697465) [![SQLite](https://camo.githubusercontent.com/3cb98be6660368cb068e945344301003de1c7031c9cce9358ae2756baf06cff7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73716c6974652d2532333037343035652e7376673f7374796c653d706c6173746963266c6f676f3d73716c697465266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/3cb98be6660368cb068e945344301003de1c7031c9cce9358ae2756baf06cff7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f73716c6974652d2532333037343035652e7376673f7374796c653d706c6173746963266c6f676f3d73716c697465266c6f676f436f6c6f723d7768697465) [![Inkscape](https://camo.githubusercontent.com/ae9f55a3b1c08c70289ffd19f01c8d5fc151b8199cd1daae293b23769d4431ce/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f496e6b73636170652d6530653065303f7374796c653d706c6173746963266c6f676f3d696e6b7363617065266c6f676f436f6c6f723d303830413133)](https://camo.githubusercontent.com/ae9f55a3b1c08c70289ffd19f01c8d5fc151b8199cd1daae293b23769d4431ce/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f496e6b73636170652d6530653065303f7374796c653d706c6173746963266c6f676f3d696e6b7363617065266c6f676f436f6c6f723d303830413133) [![Jira](https://camo.githubusercontent.com/d4647c0ec56c54bb75b8e10edfd635a50d1739da7090a20b1a5cbe4de926c47e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6972612d2532333041304646462e7376673f7374796c653d706c6173746963266c6f676f3d6a697261266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/d4647c0ec56c54bb75b8e10edfd635a50d1739da7090a20b1a5cbe4de926c47e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6972612d2532333041304646462e7376673f7374796c653d706c6173746963266c6f676f3d6a697261266c6f676f436f6c6f723d7768697465) [![Vagrant](https://camo.githubusercontent.com/211906ecb0bf1d6572e2f38f3b0afe026836433d5ca044a1b6a0945a4ae95109/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76616772616e742d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d76616772616e74266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/211906ecb0bf1d6572e2f38f3b0afe026836433d5ca044a1b6a0945a4ae95109/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76616772616e742d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d76616772616e74266c6f676f436f6c6f723d7768697465) [![Ubuntu](https://camo.githubusercontent.com/bed56781804d2dab105c063e396f592c77be4462dd681a0eb171a14ab1468976/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5562756e74752d4539353432303f7374796c653d706c6173746963266c6f676f3d7562756e7475266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/bed56781804d2dab105c063e396f592c77be4462dd681a0eb171a14ab1468976/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5562756e74752d4539353432303f7374796c653d706c6173746963266c6f676f3d7562756e7475266c6f676f436f6c6f723d7768697465)[![Shell](https://camo.githubusercontent.com/ca71011746f9ab9f634f2ffa82e4173bdacbaddb2622c844014e0dbfbe0e4c10/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7368656c6c2d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d676e7562617368266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/ca71011746f9ab9f634f2ffa82e4173bdacbaddb2622c844014e0dbfbe0e4c10/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7368656c6c2d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d676e7562617368266c6f676f436f6c6f723d7768697465) [![Cakephp](https://camo.githubusercontent.com/ae3aed0e6527e779169859821054b2c603211bd5b5d9ba191b972b83b07b0d7e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f63616b657068702d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d63616b65706870266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/ae3aed0e6527e779169859821054b2c603211bd5b5d9ba191b972b83b07b0d7e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f63616b657068702d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d63616b65706870266c6f676f436f6c6f723d7768697465) [![Arduino](https://camo.githubusercontent.com/04e42474856e0298cbb300f77515f2fb64a744c62d2161f64c98b73da4bcf882/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f61726475696e6f2d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d61726475696e6f266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/04e42474856e0298cbb300f77515f2fb64a744c62d2161f64c98b73da4bcf882/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f61726475696e6f2d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d61726475696e6f266c6f676f436f6c6f723d7768697465) [![C++](https://camo.githubusercontent.com/43c4b7b380e19f0180376381c6665baea1b2def78a0c6f98cd23580bfefcf834/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f632b2b2d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d63706c7573706c7573266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/43c4b7b380e19f0180376381c6665baea1b2def78a0c6f98cd23580bfefcf834/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f632b2b2d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d63706c7573706c7573266c6f676f436f6c6f723d7768697465) [![MsSQLServer](https://camo.githubusercontent.com/27eb77d73f7045a36b03502645c285fe2f4f117a4110d60ba183096652813152/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d7373716c2d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d6d6963726f736f66742d73716c2d736572766572266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/27eb77d73f7045a36b03502645c285fe2f4f117a4110d60ba183096652813152/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d7373716c2d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d6d6963726f736f66742d73716c2d736572766572266c6f676f436f6c6f723d7768697465) [![CodeIgniter](https://camo.githubusercontent.com/29cb67dc0739767aa0ad03389cc2acc8df8d53683385c9fef4857b59f6ba0d32/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f646549676e697465722d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d636f646569676e69746572266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/29cb67dc0739767aa0ad03389cc2acc8df8d53683385c9fef4857b59f6ba0d32/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f646549676e697465722d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d636f646569676e69746572266c6f676f436f6c6f723d7768697465) [![Lumen](https://camo.githubusercontent.com/f6d19e0b928f53b76e5de3dee3b332bee8cf94cb0527f9a480e4bfe612dbefe1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c756d656e2d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d6c756d656e266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/f6d19e0b928f53b76e5de3dee3b332bee8cf94cb0527f9a480e4bfe612dbefe1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c756d656e2d2532334646324432302e7376673f7374796c653d706c6173746963266c6f676f3d6c756d656e266c6f676f436f6c6f723d7768697465) [![Node.js](https://camo.githubusercontent.com/e7ee2b5318c1b2c6d1682f3648af8d3bc3ad87cebec8a054ffd87ee47ab5e1d7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6f64652e6a732d2532333433383533442e7376673f7374796c653d706c6173746963266c6f676f3d6e6f6465646f746a73266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/e7ee2b5318c1b2c6d1682f3648af8d3bc3ad87cebec8a054ffd87ee47ab5e1d7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6f64652e6a732d2532333433383533442e7376673f7374796c653d706c6173746963266c6f676f3d6e6f6465646f746a73266c6f676f436f6c6f723d7768697465) [![Postgresql](https://camo.githubusercontent.com/09aa7d9cb0b43337417d4417b8ccebbd2bdd292ffd26a6d5b67e81a68c27a63a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706f7374677265732d2532333331363139322e7376673f7374796c653d706c6173746963266c6f676f3d706f737467726573716c266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/09aa7d9cb0b43337417d4417b8ccebbd2bdd292ffd26a6d5b67e81a68c27a63a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706f7374677265732d2532333331363139322e7376673f7374796c653d706c6173746963266c6f676f3d706f737467726573716c266c6f676f436f6c6f723d7768697465) [![RabbitMQ](https://camo.githubusercontent.com/2e683f54f8b1c596e701dd6ec61d3af5e90e3d3e8650d6fde8ce856d65541fe1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5261626269746d712d2532334646363630302e7376673f7374796c653d706c6173746963266c6f676f3d7261626269746d71266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/2e683f54f8b1c596e701dd6ec61d3af5e90e3d3e8650d6fde8ce856d65541fe1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5261626269746d712d2532334646363630302e7376673f7374796c653d706c6173746963266c6f676f3d7261626269746d71266c6f676f436f6c6f723d7768697465) [![React](https://camo.githubusercontent.com/0a785a21287b3d884d13d58bd6263a7c9f397c618af45a1defbbb304ae7bfc94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656163742d2532333230323332612e7376673f7374796c653d706c6173746963266c6f676f3d7265616374266c6f676f436f6c6f723d253233363144414642)](https://camo.githubusercontent.com/0a785a21287b3d884d13d58bd6263a7c9f397c618af45a1defbbb304ae7bfc94/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f72656163742d2532333230323332612e7376673f7374796c653d706c6173746963266c6f676f3d7265616374266c6f676f436f6c6f723d253233363144414642) [![ESP32](https://camo.githubusercontent.com/834d1df9176e34929dfac8d43374f3b916659024d3f39c0d6771488e70339b43/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f65737033322d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d657370726573736966266c6f676f436f6c6f723d7768697465)](https://camo.githubusercontent.com/834d1df9176e34929dfac8d43374f3b916659024d3f39c0d6771488e70339b43/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f65737033322d2532333135363346462e7376673f7374796c653d706c6173746963266c6f676f3d657370726573736966266c6f676f436f6c6f723d7768697465)

###  Health Score

30

—

LowBetter than 62% of packages

Maintenance47

Moderate activity, may be stable

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

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

Total

12

Last Release

392d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/191468527?v=4)[sagnikcorelynx](/maintainers/sagnikcorelynx)[@sagnikcorelynx](https://github.com/sagnikcorelynx)

---

Top Contributors

[![sagnikcorelynx](https://avatars.githubusercontent.com/u/191468527?v=4)](https://github.com/sagnikcorelynx "sagnikcorelynx (156 commits)")

---

Tags

frameworkmicroservicephp8phpcliframeworkmvcfreeframe

### Embed Badge

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

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

###  Alternatives

[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[duxweb/dux-lite

The lightweight framework based on slim php

161.0k9](/packages/duxweb-dux-lite)[chameleon-system/chameleon-base

The Chameleon System core.

1028.6k5](/packages/chameleon-system-chameleon-base)[doppar/framework

The Doppar Framework

4012.4k14](/packages/doppar-framework)

PHPackages © 2026

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