{"id":28233454,"url":"https://github.com/sagnikrivud/free-frame-framework","last_synced_at":"2025-08-01T17:09:56.665Z","repository":{"id":292848746,"uuid":"982096211","full_name":"sagnikrivud/Free-Frame-Framework","owner":"sagnikrivud","description":"PHP based MVC Framework","archived":false,"fork":false,"pushed_at":"2025-06-02T11:31:00.000Z","size":389,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-02T15:34:22.060Z","etag":null,"topics":["framework","microservice","php8"],"latest_commit_sha":null,"homepage":"https://packagist.org/packages/freeframe/freeframe","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sagnikrivud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-12T11:18:36.000Z","updated_at":"2025-06-02T11:31:03.000Z","dependencies_parsed_at":"2025-05-14T06:08:51.442Z","dependency_job_id":"247864d5-cd0e-4b8a-9635-4ea41821fdaa","html_url":"https://github.com/sagnikrivud/Free-Frame-Framework","commit_stats":null,"previous_names":["sagnikcorelynx/free-frame-framework","sagnikrivud/free-frame-framework"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/sagnikrivud/Free-Frame-Framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagnikrivud%2FFree-Frame-Framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagnikrivud%2FFree-Frame-Framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagnikrivud%2FFree-Frame-Framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagnikrivud%2FFree-Frame-Framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sagnikrivud","download_url":"https://codeload.github.com/sagnikrivud/Free-Frame-Framework/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sagnikrivud%2FFree-Frame-Framework/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268265832,"owners_count":24222526,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","microservice","php8"],"created_at":"2025-05-18T21:10:02.375Z","updated_at":"2025-08-01T17:09:56.657Z","avatar_url":"https://github.com/sagnikrivud.png","language":"PHP","funding_links":["https://developer.paypal.com/api/rest/"],"categories":[],"sub_categories":[],"readme":"# FreeFrame – A Lightweight PHP Framework\n\n\u003cimg src=\"./Public/assets/logo.webp\" width=\"50%\" height=\"50%\"/\u003e\n\nFreeFrame 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.\n\n---\n\n### 🚀 Features\n\n- Custom CLI tool – free lets you create controllers, models, and run other useful commands.\n\n- Easy to use – Designed to be lightweight and modular, FreeFrame is perfect for building your own web applications.\n\n- Automatic routing – Route your requests easily to the correct controllers and methods.\n\n- Environment handling – Use .env files for configuration, making it easy to manage different environments.\n\n---\n\n### System Compatibility\n- PHP 8.0\n- Composer 2.0\n- Apache (XAMPP, LAMP)\n- PDO Driver\n- MongoDB driver\n\n### 🧱 Framework Structure\n```text\nmy-app/\n├── App/\n│   ├── Controllers/\n|   |── Middlewares/ \n│   ├── Models/\n│   ├── Services/\n│   └── Helpers/\n├── config/\n├── core/\n|   ├── bootstrap.php\n|   |── Router.php\n├── public/\n│   └── index.php\n├── resources/\n│   ├── pages/\n│   └── assets/\n├── routes/\n│   └── route.php\n├── storage/\n│   ├── Logs/\n|   ├── Public/\n│   └── Cache/\n|   \n├── .env\n├── .env.example\n├── free\n├── Execute.sh\n├── composer.json\n└── README.md\n```\n\n### Implemented Features\n```text\n✔ CLI (php free)\n\n✔ Routing system (routes/route.php)\n\n✔ Controllers (make:controller)\n\n✔ Services (make:service)\n\n✔ Models (make:model)\n\n✔ Middleware (make:middleware)\n\n✔ Logging system (error.log)\n\n✔ log:clear and storage:link commands\n\n✔ Route listing (route:list)\n\n✔ Auto exception logging\n\n✔ Basic MySQL \u0026 MongoDB integration setup\n\n✔ Custom command generator (make:command)\n\n✔ Debugger placeholder\n\n✔ CLI server (php free serve)\n```\n\n### 🏚️ Namespace or Class not found issue resolved\n```sh\n$ composer dump-autoload\n```\n### Publish Framework\n- Tag latest commit with a semantic version:\n```sh\n$ git tag v1.0.0\n$ git push origin v1.0.0\n```\n- Submit Framework repo at Packagist\nhttps://packagist.org/packages, then click on `Update`\n\n- Create a blnak project `$ composer create-project freeframe/freeframe my-app ^2.5`\n- Specify version `$ composer create-project freeframe/freeframe my-app \"2.5\"`\n- Alter try `$ composer create-project freeframe/freeframe my-app --stability=dev`\n\n### ✅ Install Symfony Console via Composer\n1. Install\n```sh\n$ composer require symfony/console\n```\n2. Create CLI Entry File\n```text\nframework/\n    ├── ignite_file        ← this is CLI\n    ├── composer.json\n    ├── vendor/\n```\n\n### 🗂️ Create a Project\n```sh\n$ composer create-project freeframe/freeframe my-app --stability=dev\n```\n\n###  Start Server\n```sh\n$ php free serve\n```\n\u003e Open `http://localhost:8000/`\n\n### List of Commands\n\u003e Check version\n```sh\n$ php free --version\n```\n```sh\nFreeFrame CLI v1.0.0\n```\n###  Create Controller\n```sh\n$ php free make:controller HomeController\n```\n\u003e `App\\Controllers\\New-Controller`\n\n### Create Service Classes under App/Services\n```sh\n$ php free make:service UserService\n```\n### Create Model\n```sh\n$ php free make:model User\n```\n\u003e Created at `App/Models` folder\n\n### Clear Error logs\n```sh\n$ php free log:clear\n```\n### Create Storage link in public\n```sh\n$ php free storage:link\n```\n### See Available commands\n```sh\n$ php free help\n```\n![Help](Public/assets/helps.PNG)\n\n### List of Routes\n```sh\n$ php free route:list\n```\n\n### Create Middleware\n```sh\n$ php free make:middleware AuthMiddleware\n```\n\n### Connect database (Default Support `Mysql` \u0026 `MongoDB`)\n\u003e At Controller or Service Layer\n```php\nuse Core\\Database;\n\n$db = (new Database())-\u003egetConnection();\n\n// Example RDB query\nif ($db instanceof PDO) {\n    $stmt = $db-\u003equery(\"SELECT * FROM users\");\n    $users = $stmt-\u003efetchAll(PDO::FETCH_ASSOC);\n}\n\n// Example MongoDB query:\nif ($db instanceof \\MongoDB\\Database) {\n    $collection = $db-\u003eusers;\n    $users = $collection-\u003efind()-\u003etoArray();\n}\n```\n### Install Mongodb extension for PHP\n\u003e Download extension for Windows from here according to PHP version: [Click](https://pecl.php.net/package/mongodb/2.0.0/windows)\n\u003e Check thread safety or not \n```sh\n$ php -i \u003e phpinfo.txt \n```\n\u003e Search `Thread Safety`, 💡 If Thread Safety is enabled, you need the TS version of the MongoDB DLL.\nIf it's disabled, download the NTS version.\n\u003e Place the downloaded .dll into: `C:\\xampp\\php\\ext`\n\u003e Open your php.ini file `(in C:\\xampp\\php)` and add: `extension=mongodb`\n\u003e Restart Apache using the XAMPP control panel.\n```sh\nextension=php_mongodb.dll\n```\n### Install Cassandra DB for PHP\n\u003e Download and install cassndra dll (windows) file from here: [Click](https://pecl.php.net/package/cassandra/1.3.2/windows)\n\n\u003e Unzip the Zip and take `php_cassandra.dll` file and then place it on `C:\\xampp\\php\\ext`, after that\nOpen Open your php.ini file `(in C:\\xampp\\php)` and add: `extension=php_cassandra.dll`\n- For linux\n```sh\n$ sudo pecl install cassandra\n```\nAdd this extension at php.ini file `(in C:\\xampp\\php)`\n```php\nextension=cassandra.so\n```\n\n### Migrate Tables from RDB\n```sh\n$ php free migrate\n```\n\n### Create Custom Request\n```sh\n$ php free make:request CommonRequest\n```\n```php\nuse Core\\Http\\Request;\nuse Core\\Http\\Response;\nuse App\\Requests\\CommonRequest;\n\npublic function store()\n{\n    $request = new Request();\n    $userRequest = new CommonRequest();\n\n    if (!$userRequest-\u003evalidate($request-\u003eall())) {\n        return Response::json(['errors' =\u003e $userRequest-\u003eerrors()], 422)-\u003esend();\n    }\n\n    // Proceed with storing user...\n\n    return Response::json(['message' =\u003e 'User created successfully']);\n}\n```\n\n### 👤 Auth Scaffolding feature (JWT Authentication)\n```sh\n$ php free auth:install\n```\n\u003e `AuthController`, `AuthMiddleware` will created `JWT secret` will append in `.env`\n\n### 🏡 ORM Relationships\n```php\nuse App\\Models\\Profile;\nuse App\\Models\\Post;\nuse App\\Models\\User;\n\npublic function profileDetails()\n{\n    return $this-\u003ehasOnlyOne(Profile::class, 'user_id');\n}\n\npublic function posts()\n{\n    return $this-\u003ehasManyMore(Post::class, 'user_id');\n}\n\npublic function author()\n{\n    return $this-\u003ebelongsToOnly(User::class, 'user_id');\n}\n\n```\n\n### ⛯ Create Routes\n\u003e At routes/route.php\n```php\nuse App\\Controllers\\HomeController;\n\n$router-\u003eget('/', 'HomeController@index');\n```\n\u003e Define Routes with Prefixes\n```php\n$router-\u003egroup(['prefix' =\u003e '/api'], function ($router) {\n    $router-\u003eget('/users', 'UserController@index');\n    $router-\u003epost('/login', 'AuthController@login');\n});\n\n$router-\u003egroup(['prefix' =\u003e '/admin'], function ($router) {\n    $router-\u003eget('/dashboard', 'AdminController@dashboard');\n    $router-\u003epost('/settings', 'AdminController@saveSettings');\n});\n```\nThis will shown as\n```text\n/api/users\n\n/api/login\n\n/admin/dashboard\n\n/admin/settings\n```\n\n### 📟 Session Manage\n```php\nuse Core\\Facades\\Session;\n\n//Set a Key\nSession::set($key, $value);\n// Get a Key Value\nSession::get($key);\n//Remove Key\nSession::forget($key);\n//Check session has a particular key\nSession::has($key);\n//Clear all Session\nSession::flush();\n```\n\n### 🖥️ PHP Curl Operation\n```php\nuse Core\\Http\\HttpRemote;\n\n(array) $headers;\n(array) $data;\n\n$http = new HttpRemote();\n//Fetch a remote URL\n$http-\u003eget($url, $headers);\n// Post data to Remote URL\n$http-\u003epost($url, $data, $headers);\n// Update to Remote URL\n$http-\u003eput($url, $data, $headers);\n//Delete request\n$http-\u003edelete($url, $data, $headers);\n```\n\n### 🤺 Global Middlewares\n\u003e `App/Middleware/RateLimitMiddleware`\n```php\n// Maximum requests allowed per time window\nprotected int $maxRequests = 10;\n// Time window duration in seconds (e.g., 60 seconds = 1 minute)\nprotected int $timeWindow = 60;\n```\n\u003e `App/Middleware/AuthMiddleware`\n```php\npublic function handle($request, Closure $next)\n{\n    // Add your logic here\n\n    return $next($request);\n}\n```\n\n### 🗄️ Json Resource Class\n\u003e Create a Custom Json Resource file Ex: `UserResource` under `App\\Resources`\n```php\nnamespace App\\Resources;\n\nuse App\\Resources\\JsonResource;\n\nclass UserResource extends JsonResource\n{\n    public function toArray(): array\n    {\n        return [\n            'user_id' =\u003e $this-\u003eresource['id'],\n            'full_name' =\u003e $this-\u003eresource['name'],\n            'email' =\u003e $this-\u003eresource['email'],\n            // Add more formatted fields here\n        ];\n    }\n}\n// Use in Controller\n$userResource = new UserResource($user);\n$userResource-\u003esend();\n```\n\n### 🗃️ Maintain Migration file\n\u003e Create a `users` table\n```sh\n$ php free make:migration create_users_table\n```\n\u003e Migrate the db\n```sh\n$ php free migrate\n```\n\u003e Drop a table\n```sh\n$ php free make:migration drop_orders_table\n```\n### Language manage\n\u003e Add language files at `lang` directory in array format, and then set the desired lang code at `config/app.php`\n```php\nlang('lang_key_name');\n```\n\n### 📧 Mailing system\n```php\nuse Core\\Mail\\Mail;\n\n$mailer = new Mail();\n$mailer-\u003eto('recipient@example.com', 'John Doe')\n     -\u003esubject('Welcome to FreeFrame!')\n     -\u003ebody('\u003ch1\u003eHello from FreeFrame\u003c/h1\u003e\u003cp\u003eThis is your welcome email.\u003c/p\u003e')\n     -\u003esend();\n```\n\n### 📮 IMAP (Incoming Mail Access Protocol) Feature\n[Docuemntation:](https://github.com/Webklex/php-imap) \n\u003e Package used \n```sh\n$ composer require webklex/php-imap\n```\n\nFill the `.env`\n```env\nIMAP_HOST=imap.gmail.com\nIMAP_PORT=993\nIMAP_ENCRYPTION=ssl\nIMAP_VALIDATE_CERT=true\nIMAP_USERNAME=your_email@gmail.com\nIMAP_PASSWORD=your_password\n```\nUsage\n```php\nuse Core\\Mail\\ImapClient;\n\n$client = new ImapClient();\n$mailbox = $client-\u003egetFolders();\n$mails = $client-\u003egetInboxMessages();\n$spambox = $client-\u003egetSpamMessages();\n```\n\n### 💰 Payments supported\n1. [Stripe](https://docs.stripe.com/api)\n2. [Paypal](https://developer.paypal.com/api/rest/)\n3. [Razorpay](https://razorpay.com/docs/api/)\n4. [Square payment](https://developer.squareup.com/docs)\n- Use\n```php\nuse Payments\\PaymentManager;\nuse Payments\\Gateways\\StripeGateway;\nuse Payments\\Gateways\\PaypalGateway;\nuse Payments\\Gateways\\RazorpayGateway;\nuse Payments\\Gateways\\SquareGateway;\n```\n- Define Payment gateway name at `.env`\n```env\nDEFAULT_PAYMENT_GATEWAY=stripe #razorpay #paypal #square\n```\n- Fill the details according to Payment Gateway\n```env\n# Stripe\nSTRIPE_KEY=''\nSTRIPE_SECRET=''\n\n# Razorpay\nRAZORPAY_KEY=''\nRAZORPAY_SECRET=''\n\n# PayPal\nPAYPAL_CLIENT_ID=''\nPAYPAL_SECRET=''\n\n# Square\nSQUARE_ACCESS_TOKEN=''\nSQUARE_ENV='sandbox'\n```\n🔁 Queue Worker \u0026 Queue Job\n```sh\n$ php free make:job JobClassName\n```\n- Run Queue Job\n```sh\n$ php free queue:work\n```\n- Base Queue class\n```php\n\\core\\Jobs\\BaseJob.php\n```\n\n### AWS Services supported\n- SQS (Simple Queue Service)\n    - `\\core\\AWS\\SQSService.php` \n    ```php\n    use Core\\AWS\\SQSService;\n    $awsService = new SQSService();\n    $awsService-\u003esendMessage($message);\n    ```\n- SES (Simple Email Service)\n    - `\\core\\AWS\\SESService.php`\n    ```php\n    use Core\\AWS\\SESService;\n    $awsService = new SESService();\n    $awsService-\u003esendEmail($to, $subject, $htmlBody);\n    ```\n- S3 (Simple Storage Service)\n    - `\\core\\AWS\\S3Service.php`\n    ```php\n    use Core\\AWS\\S3Service;\n    $awsService = new S3Service();\n    $awsService-\u003eupload($key, $body, $contentType);\n    $awsService-\u003efetch($key, $type); //$type = 'application/octet-stream'\n    ```\n- SNS (Simple notification system)\n    - `\\core\\AWS\\SNSService.php`\n    ```php\n    use Core\\AWS\\SNSService;\n    $awsService = new SNSService();\n    $awsService-\u003epublish($message);\n    $awsService-\u003eevent($eventName, $data);\n    ```    \n- EFS (Elastic File System)\n    - `\\core\\AWS\\EFSService.php`\n    ```php\n    use Core\\AWS\\EFSService;\n    $awsService = new EFSService();\n    $awsService-\u003ecreateFileSystem($creationToken);\n    $awsService-\u003edescribeFileSystems($fileSystemId);\n    $awsService-\u003edeleteFileSystem($fileSystemId);\n    ```\n\u003e Fill the details at `.env`\n```env\nAWS_ACCESS_KEY_ID=your-access-key\nAWS_SECRET_ACCESS_KEY=your-secret-key\nAWS_DEFAULT_REGION=ap-south-1\n\nAWS_S3_BUCKET=your-bucket-name\nAWS_SQS_QUEUE_URL=https://sqs.ap-south-1.amazonaws.com/xxxx/your-queue\nAWS_SNS_TOPIC_ARN=arn:aws:sns:ap-south-1:xxxx:your-topic\nAWS_SES_EMAIL=verified@yourdomain.com\n```    \n\n### 👏 Credit\nBuilt with ❤️ by **[Sagnik Dey](https://github.com/sagnikrivud)**\n\n\nI'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.\n\nI'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.\n\n\n💻 Tech Stack\n\n\n![CSS3](https://img.shields.io/badge/css3-%231572B6.svg?style=plastic\u0026logo=css3\u0026logoColor=white) ![PHP](https://img.shields.io/badge/php-%23777BB4.svg?style=plastic\u0026logo=php\u0026logoColor=white) ![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=plastic\u0026logo=html5\u0026logoColor=white) ![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=plastic\u0026logo=javascript\u0026logoColor=%23F7DF1E) ![AWS](https://img.shields.io/badge/AWS-%23FF9900.svg?style=plastic\u0026logo=amazon-aws\u0026logoColor=white) ![Vue.js](https://img.shields.io/badge/vuejs-%2335495e.svg?style=plastic\u0026logo=vuedotjs\u0026logoColor=%234FC08D) ![Vuetify](https://img.shields.io/badge/Vuetify-1867C0?style=plastic\u0026logo=vuetify\u0026logoColor=AEDDFF) ![NPM](https://img.shields.io/badge/NPM-%23000000.svg?style=plastic\u0026logo=npm\u0026logoColor=white) ![jQuery](https://img.shields.io/badge/jquery-%230769AD.svg?style=plastic\u0026logo=jquery\u0026logoColor=white) ![Express.js](https://img.shields.io/badge/express.js-%23404d59.svg?style=plastic\u0026logo=express\u0026logoColor=%2361DAFB) ![Laravel](https://img.shields.io/badge/laravel-%23FF2D20.svg?style=plastic\u0026logo=laravel\u0026logoColor=white) ![NuxtJS](https://img.shields.io/badge/Nuxt-black?style=plastic\u0026logo=nuxt.js\u0026logoColor=white) ![Socket.io](https://img.shields.io/badge/Socket.io-black?style=plastic\u0026logo=socket.io\u0026badgeColor=010101) ![Apache](https://img.shields.io/badge/apache-%23D42029.svg?style=plastic\u0026logo=apache\u0026logoColor=white) ![MariaDB](https://img.shields.io/badge/MariaDB-003545?style=plastic\u0026logo=mariadb\u0026logoColor=white) ![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=plastic\u0026logo=mongodb\u0026logoColor=white) ![MySQL](https://img.shields.io/badge/mysql-%2300f.svg?style=plastic\u0026logo=mysql\u0026logoColor=white) ![SQLite](https://img.shields.io/badge/sqlite-%2307405e.svg?style=plastic\u0026logo=sqlite\u0026logoColor=white) ![Inkscape](https://img.shields.io/badge/Inkscape-e0e0e0?style=plastic\u0026logo=inkscape\u0026logoColor=080A13) ![Jira](https://img.shields.io/badge/jira-%230A0FFF.svg?style=plastic\u0026logo=jira\u0026logoColor=white) ![Vagrant](https://img.shields.io/badge/vagrant-%231563FF.svg?style=plastic\u0026logo=vagrant\u0026logoColor=white) ![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=plastic\u0026logo=ubuntu\u0026logoColor=white)\n![Shell](https://img.shields.io/badge/shell-%231563FF.svg?style=plastic\u0026logo=gnubash\u0026logoColor=white) ![Cakephp](https://img.shields.io/badge/cakephp-%23FF2D20.svg?style=plastic\u0026logo=cakephp\u0026logoColor=white) ![Arduino](https://img.shields.io/badge/arduino-%231563FF.svg?style=plastic\u0026logo=arduino\u0026logoColor=white) ![C++](https://img.shields.io/badge/c++-%231563FF.svg?style=plastic\u0026logo=cplusplus\u0026logoColor=white) ![MsSQLServer](https://img.shields.io/badge/mssql-%23FF2D20.svg?style=plastic\u0026logo=microsoft-sql-server\u0026logoColor=white) ![CodeIgniter](https://img.shields.io/badge/CodeIgniter-%23FF2D20.svg?style=plastic\u0026logo=codeigniter\u0026logoColor=white) ![Lumen](https://img.shields.io/badge/Lumen-%23FF2D20.svg?style=plastic\u0026logo=lumen\u0026logoColor=white) ![Node.js](https://img.shields.io/badge/Node.js-%2343853D.svg?style=plastic\u0026logo=nodedotjs\u0026logoColor=white) ![Postgresql](https://img.shields.io/badge/postgres-%23316192.svg?style=plastic\u0026logo=postgresql\u0026logoColor=white) ![RabbitMQ](https://img.shields.io/badge/Rabbitmq-%23FF6600.svg?style=plastic\u0026logo=rabbitmq\u0026logoColor=white) ![React](https://img.shields.io/badge/react-%2320232a.svg?style=plastic\u0026logo=react\u0026logoColor=%2361DAFB) ![ESP32](https://img.shields.io/badge/esp32-%231563FF.svg?style=plastic\u0026logo=espressif\u0026logoColor=white)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagnikrivud%2Ffree-frame-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsagnikrivud%2Ffree-frame-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagnikrivud%2Ffree-frame-framework/lists"}