A framework agnostic PHP library to build chat bots

Overview

BotMan

Latest Version on Packagist Build Status codecov Scrutinizer Code Quality Packagist StyleCI Slack Monthly Downloads

https://phppackagedevelopment.com

If you want to learn how to create reusable PHP packages yourself, take a look at my upcoming PHP Package Development video course.

About BotMan

BotMan is a framework agnostic PHP library that is designed to simplify the task of developing innovative bots for multiple messaging platforms, including Slack, Telegram, Microsoft Bot Framework, Nexmo, HipChat, Facebook Messenger and WeChat.

$botman->hears('I want cross-platform bots with PHP!', function (BotMan $bot) {
    $bot->reply('Look no further!');
});

If you want to learn how to create reusable PHP packages yourself, take a look at my upcoming PHP Package Development video course.

Documentation

You can find the BotMan documentation at https://botman.io.

Support the development

Do you like this project? Support it by donating

Contributing

Please see CONTRIBUTING for details.

0 1 2 3 4 5 6 7

Security Vulnerabilities

If you discover a security vulnerability within BotMan, please send an e-mail to Marcel Pociot at [email protected]. All security vulnerabilities will be promptly addressed.

License

BotMan is free software distributed under the terms of the MIT license.

Comments
  • Telegram: Conversations

    Telegram: Conversations

    Hello,

    I use botman in a new Laravel 5.3 application. I have tried with the laravel starter, but i couldnt get it to work. So i started with a clean install.

    As I am not very familiar with Laravel, I got it working, except the conversations. I have taken the Example conversations from the Laravel Starter.

    When I use Start Conversation, the conversation is triggered and the buttons appear in Telegram. When I click a button, nothing happens.

    Can it be something with the cache? As i can read in previous issues and documentation, when used in Laravel, caching is automatic handled?

    Controller

    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use Mpociot\BotMan\BotManFactory;
    use Mpociot\BotMan\BotMan;
    use App\Conversations\ExampleConversation;
    
    class BotManController extends Controller
    {
    	public function handle(Request $request)
    	{
    		$botman = app('botman');
    
    		// Simple respond method
    		$botman->hears('Hello|hi|Hi', function (BotMan $bot) {
    			//Reply
    			$bot->reply('Hi there :)');
    		});
    
    		$botman->hears('Start conversation', function (BotMan $bot) {
    			$bot->startConversation(new ExampleConversation());
    		});
    		
    		$botman->listen();
    	}
    }
    

    Conversation

    namespace App\Conversations;
    
    use Illuminate\Foundation\Inspiring;
    use Mpociot\BotMan\Answer;
    use Mpociot\BotMan\Button;
    use Mpociot\BotMan\Conversation;
    use Mpociot\BotMan\Question;
    
    class ExampleConversation extends Conversation
    {
        /**
         * First question
         */
        public function askReason()
        {
            $question = Question::create("Huh - you woke me up. What do you need?")
                ->fallback('Unable to ask question')
                ->callbackId('ask_reason')
                ->addButtons([
                    Button::create('Tell a joke')->value('joke'),
                    Button::create('Give me a fancy quote')->value('quote'),
                ]);
            return $this->ask($question, function (Answer $answer) {
                if ($answer->isInteractiveMessageReply()) {
                    if ($answer->getValue() === 'joke') {
                        $joke = json_decode(file_get_contents('http://api.icndb.com/jokes/random'));
                        $this->say($joke->value->joke);
                    } else {
                        $this->say(Inspiring::quote());
                    }
                }
            });
        }
    
        /**
         * Start the conversation
         */
        public function run()
        {
            $this->askReason();
        }
    }
    
    opened by mrtn 46
  • BotMan property in Conversation object

    BotMan property in Conversation object

    Didn't find a better place to ask this question, maybe Botman could have it's own gitter or slack? 😃

    Conversation object now get serialized and deserialized from the cache by loadActiveConversation in BotMan while BotMan is an attribute of Conversation itself. I am not yet familiar with a code enough to propose how to avoid this circular dependency, however, BotMan should really be a singleton (which will help to avoid problems with cache and storage drivers that require connecting to some backend). One way to do might be to not serialize it via __sleep and rather inject current BotMan instance in getStoredConversation.

    Any thoughts on this?

    opened by thedotedge 29
  • Start Conversation without hears

    Start Conversation without hears

    Is there a way to start a conversation with ->hears()?

    We are wanting to have our bot ask a question every morning at a certain time, how could we go about that with a conversation?

    opened by brianclogan 26
  • Listen to other data types

    Listen to other data types

    BotMan should be able to listen for other data types, such as images, audio, location or generic attachments.

    Proposed API

    // Images
    $botman->receivesImages(function($bot) {
       $data = $bot->getMessage()->getImages();
    });
    
    // Videos
    $botman->receivesVideos(function($bot) {
       $data = $bot->getMessage()->getVideos();
    });
    
    // Audio
    $botman->receivesAudio(function($bot) {
       $data = $bot->getMessage()->getAudio();
    });
    
    // Location
    $botman->receivesLocation(function($bot) {
       $data = $bot->getMessage()->getLocations();
    });
    
    // Generic
    $botman->receivesAttachments(function($bot) {
       $data = $bot->getMessage()->getAttachments();
    });
    

    Necessary Steps:

    Images

    • [X] Telegram Driver
    • [X] Slack RTM Driver
    • [X] Facebook Driver
    • [x] MS Bot Framework Driver
    • [x] WeChat Driver
    • [ ] HipChat Driver

    Videos

    • [X] Telegram Driver
    • [X] Slack RTM Driver
    • [X] Facebook Driver
    • [ ] MS Bot Framework Driver
    • [x] WeChat Driver
    • [ ] HipChat Driver

    Audio

    • [X] Telegram Driver
    • [X] Slack RTM Driver
    • [X] Facebook Driver ( @christophrumpel )
    • [x] WeChat Driver
    • [ ] HipChat Driver

    Location

    • [X] Telegram Driver
    • [X] Facebook Driver ( @christophrumpel )
    • [x] WeChat Driver
    • [ ] HipChat Driver

    Generic

    • [X] Telegram Driver
    • [X] Slack RTM Driver
    • [X] Facebook Driver ( @christophrumpel )
    • [X] MS Bot Framework Driver
    • [ ] WeChat Driver
    • [ ] HipChat Driver

    Related issue: #169

    help wanted 
    opened by mpociot 24
  • Whatsapp Business API in botman

    Whatsapp Business API in botman

    As a Botman user developing bots for facebook messenger, I wanted to know if it is planned to add whatsapp to the Botman platform? Especially considering that the way to communicate with the api is very similar to facebook messenger.

    Here I leave the links of whatsapp Business APIs

    https://developers.facebook.com/docs/whatsapp https://developers.facebook.com/docs/whatsapp/api/webhooks https://developers.facebook.com/docs/whatsapp/api/webhooks/inbound

    Thank you very much for any information.

    opened by dafner 21
  • no answer, no exception

    no answer, no exception

    I just made like in tutorial

    use Mpociot\BotMan\BotManFactory;
    use Mpociot\BotMan\BotMan;
    use Mpociot\BotMan\Storages\Drivers\FileStorage;
    
    $token = 'MY-TOKEN';
    $config =  [
        'facebook_token' => $token,
        'facebook_app_secret' => 'MY-SECRET',
    
    ];
    
    // $storage = new FileStorage(__DIR__);
    // create an instance
    $botman = BotManFactory::create($config);
    $botman->verifyServices($token);
    
    $botman->hears('foo', function ($bot) {
        $bot->typesAndWaits(2);
        $bot->reply('Hello World');
    });
    // give the bot something to listen for.
    $botman->hears('.*', function (BotMan $bot) {
        $bot->reply('Hello yourself.');
    });
    
    // start listening
    $botman->listen();
    

    I see in logs...that facebook made request to my address. but no answer appear. Also didn't get anythng in error log.

    opened by adeptofvoltron 21
  • "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?

    Description:

    For PHP 7.3 :

    composer require botman/botman

    returns :

    [ErrorException]
    "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?

    Steps To Reproduce:

    opened by AdamLew 19
  • Serialization of 'Closure' is not allowed

    Serialization of 'Closure' is not allowed

    I'm using botman with laravel 5.4 when I try to run some conversation with ask function. It will result to Serialization of 'Closure' is not allowed. Example conversation:

    <?php
    namespace App\Conversations;
    
    use Illuminate\Foundation\Inspiring;
    
    use Mpociot\BotMan\Answer;
    use Mpociot\BotMan\Button;
    use Mpociot\BotMan\Conversation;
    use Mpociot\BotMan\Question;
    
    class ReservationConversation extends Conversation
    {
    
        /**
         * First question
         */
        public function askReason()
        {
            $question = Question::create("Ahoj, ako ti pomozem?")
                ->fallback('Unable to ask question')
                ->addButtons([
                    Button::create('Tell a joke')->value('joke'),
                    Button::create('Give me a fancy quote')->value('quote'),
                ]);
    
            return $this->ask($question, function (Answer $answer) {
                $this->say('Hello');
            });
        }
        /**
         * Start the conversation
         */
        public function run()
        {
            $this->askReason();
        }
    }
    

    When I take a look to stack trace I see that error comes from FileStore.php

    public function put($key, $value, $minutes)
        {
            $this->ensureCacheDirectoryExists($path = $this->path($key));
    
            $this->files->put(
                $path, $this->expiration($minutes).serialize($value), true
            );
        }
    
    opened by xar 19
  • Does not send reply

    Does not send reply

    Helo, I have set up the botman project and configured facebook messenger, i can receive messages, but the reply() method does not send a message back to the user.

    I have also tried using botman:tinker but no reply also.

    I am using a windows 10 PC

    opened by jokamjohn 18
  • botman->say()

    botman->say()

    Hi There,

    Firstly, awesome library, what more can be said.

    I was wondering if someone has a working example of botman->say, I am new to all of this and try as I may I can not originate messages to either skype or telegram, my own ignorance I am sure. (Got everything else working, hears, replies, conversations).

    What I am trying to do is originate a message to a user, using laravel, simple get route for testing as follows:

    public function testOriginate()
    {
    	\\ log at this point shows I get here
    	$botman = app('botman');
    	$botman->say('Hello There I have some interesting news','29:xxx',BotFrameworkDriver::class);
    }
    

    switching to telegram driver and user id has no effect. No errors in the log etc. Just seems to disappear into a dark abyss.

    Would appreciate a push down the rabbit hole.

    Thanks in advance.

    opened by jacquesvn 18
  • Nothing being passed in Payload

    Nothing being passed in Payload

    For some reason, the payload that comes from Slack is empty, is that an issue with the repo, or slack?

    I followed your directions, setup a route that responds with the URL verification, that works just fine, but when I send a message to the bot, Slack sends a message with the $request variable being completely empty. Am I missing something here?

    opened by brianclogan 18
  • Add FileCache driver

    Add FileCache driver

    • Please check if the PR fulfills these requirements
    • [x] The commit message follows our guidelines
    • [x] Tests for the changes have been added (for bug fixes / features)
    • [ ] Docs have been added / updated (for bug fixes / features)
    • What kind of change does this PR introduce? (Bug fix, feature, docs update, ...) feature

    • What is the current behavior? (You can also link to an open issue here) None, when testing with the bot the default behavior is the ArrayCache. If you want to test conversations there is no way to do this in a simple manner. This cache driver is not to be used for production usage.

    • What is the new behavior (if this is a feature change)? Add a simple cache implementation to use for testing reasons with the bot.

    • Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?) None.

    • Other information: When creation this cache driver a location for the json files can be specified when constructing this driver. When this PR may be excepted I will add the needed documentation :-).

    opened by prennings 0
  • Changelog for latest updates

    Changelog for latest updates

    • BotMan Version: 2.7.7

    Is it possible to tag the latest releases since 2.6.1 and most importantly get a Changelog?

    I just ran composer update on my project and it pulled 2.7.7 but I don't know if there are any breaking changes. So I'm not really confident.

    Very happy to see this package being updated thought. Keep up the good work! Thanks ;)

    opened by clementmas 0
  • Hangout Driver cant originating message (say method)

    Hangout Driver cant originating message (say method)

    BotMan Version: 2.6.1; PHP Version: 7.3; Messaging Service(s): Hangout Driver; Laravel: 5.8;

    Description:

    I'm trying to originating message with say method, but it wont send any message to the recipient. I was try using email and user id, but it was return the same response of payload.

    My Code : ` $email = "users/XXXXXXXXXXXXXXXXXX"; // i got this from $bot->getUser()->getId() from worked conversation $message = "test";

        $config = [
            "hangouts" => [
               "token" => "XXXXXXXXXXXXXXXXXXXXXX"
            ]
        ];
        $botman = BotManFactory::create($config);
    
        $resp = $botman->say($message, $email, HangoutsDriver::class);
    
        dd($resp);
    

    `

    response { "text": "tesfast", "cards": [ { "sections": [ { "widgets": [] } ] } ] }

    and message still wont send. please help me to find out why its not working. thank you.

    Steps To Reproduce:

    opened by tyghaykal 0
  • Master

    Master

    • Please check if the PR fulfills these requirements
    • [ ] The commit message follows our guidelines
    • [ ] Tests for the changes have been added (for bug fixes / features)
    • [ ] Docs have been added / updated (for bug fixes / features)
    • What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)

    docs update

    • What is the current behavior? (You can also link to an open issue here)

    Many people have cant use botman because of errors with installation. After a doing the instruction from official site we understand we haven't composer. After installing composer we try php artisan serve and have a 500 error with "Wooops..."

    It's not clear how to start with botman on the clean installed Operating System On the web there are many questions about problems with errors. Fast search in the botman issues gives me this: 0 1 2

    • What is the new behavior (if this is a feature change)?

    There are many projects with "Example installation" (like nextcloud for example) I wrote a step-by-step guide to have working botman on clean Ubuntu installation

    • Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)

    Absolutely NO!

    • Other information:
    opened by sebaxakerhtc 0
  • ButtonTemplate not working

    ButtonTemplate not working

    • BotMan Version: 2.0.#
    • PHP Version: 7.1.33
    • Messaging Service(s): Facebook Messenger
    • Cache Driver:

    Description:

    I'm trying to use ButtonTemplate but it doesn't work

    $bot->reply(ButtonTemplate::create('Hello world')
        ->addButton(ElementButton::create('button1')->type('postback')->payload('Click me!'))
    );
    
    opened by edmund5 2
  • How to mock or disable Botman middleware?

    How to mock or disable Botman middleware?

    • BotMan Version: 2.6.1
    • PHP Version: 7.4
    • Messaging Service(s): Telegram
    • Cache Driver: file

    Description:

    I need to skip Botman middleware in tests. The default Laravel Illuminate\Foundation\Testing\WithoutMiddleware trait doesn't disable Botman middleware in tests. I also tried to mock it but without success:

    I have a CreateUniverse Matching middleware. First I resolve it through the Service Containter:

    //
    // botman.php
    //
    
    $middleware = resolve(CreateUniverse::class);
    
    $botman->hears('hi', function (BotMan $bot) {
        $bot->reply('hello');
    })->middleware($middleware);
    

    Then I'm trying to mock it:

    //
    // RoutesTests.php
    //
    
    $middleware_double = Mockery::mock(CreateUniverse::class);
    
    $middleware_double->shouldReceive('matching')
        ->once()
        ->with(Mockery::any())
        ->andReturn(true);
    
    $this->app->instance(CreateUniverse::class, $middleware_double);
    
    $this->bot
        ->receives('hi')
        ->assertReply('hello');
    

    But get an error:

    Mockery\Exception\InvalidCountException: Method matching(<Any>) from Mockery_0_App_Http_Middleware_CreateUniverse should be called exactly 1 times but called 0 times.
    

    It looks like my mock is not applied.

    opened by chimit 0
Releases(2.6.1)
  • 2.6.1(Sep 11, 2020)

  • 2.6.0(May 31, 2020)

    Changes

    • Added missing namespace 'File' (#1105)
    • Apply fixes from StyleCI (#1107)
    • symfony/http-foundation 5.0 (#1117)
    • Allow any callable as a callback (#1102)
    • Added OutgoingMessage type to BotMan::reply() $message parameter (#1104)
    • Add tests for PHP 7.4. (#1134)
    • Update LaravelCache.php (#1028)
    • Indicate possible null values in PHPDoc @return (#1097)
    • Updated compatibility for tightenco/collect (#1063)
    • fix wit ai connection (#1131)
    • Add Select action for Slack (#1087)
    • Allow BotMan to hear from an array of commands (#855)
    • Fix type of Curl::prepareRequest() (#1059)
    Source code(tar.gz)
    Source code(zip)
  • 2.4.1(Aug 9, 2018)

  • 2.4.0(Aug 8, 2018)

    Added

    • Added ability to listen for multiple events at once

    Fixed

    • Fixed Symfony dependency issues
    • Allow using opis/closure 3.0
    • Fix invalid conversation cache handling
    Source code(tar.gz)
    Source code(zip)
  • 2.3.3(May 2, 2018)

  • 2.3.2(Apr 16, 2018)

  • 2.3.1(Apr 3, 2018)

  • 2.3.0(Feb 20, 2018)

    Added

    • Added extras on attachment objects
    • Added support for Laravel's autowiring in the PSR-11 implementation

    Fixed

    • Fixed an issue with custom middleware added to specific hears commands
    Source code(tar.gz)
    Source code(zip)
  • 2.2.0(Feb 19, 2018)

  • 2.1.10(Feb 7, 2018)

  • 2.1.9(Jan 19, 2018)

  • 2.1.8(Jan 18, 2018)

  • 1.5.9(Jan 15, 2018)

  • 2.1.7(Jan 12, 2018)

  • 2.1.6(Dec 19, 2017)

  • 2.1.5(Dec 4, 2017)

  • 2.1.4(Dec 1, 2017)

  • 2.1.3(Oct 18, 2017)

  • 2.1.2(Oct 9, 2017)

  • 2.1.1(Oct 5, 2017)

  • 2.1.0(Sep 30, 2017)

    Added

    • Added ability to cache message user information (#542)
    • Added macro functionality to the Conversation method
    • Added getStoredConversationQuestion method
    • Improved Fake Driver

    Fixed

    • Fix incorrect 'conversation_cache_time' config path (#557)
    Source code(tar.gz)
    Source code(zip)
  • 2.0.4(Sep 11, 2017)

  • 2.0.3(Sep 10, 2017)

  • 2.0.2(Sep 6, 2017)

    Added

    • Drivers can have a method called additionalDrivers to simplify manual driver loading, when not using BotMan studio.

    Fixed

    • Fixed matching middleware inside of conversations not receiving the manipulated $message object.
    Source code(tar.gz)
    Source code(zip)
  • 2.0.1(Aug 28, 2017)

    Added

    • Added ability to originate inline conversations.
    • Moved each driver into their own repository.
    • Facebook - Added support to send file and audio attachments.
    • Telegram - Added support to send file, audio and location attachments.
    • Added Kik driver.
    • Added custom Attachment classes.
    • Added support to listen for message service events.
    • Changed the way middleware works in BotMan.
    • Added support for Slack interactive menu messages.
    • Added Facebook Referral driver.
    • Allow replying to an existing thread for Slack drivers (#327).
    • Added loadDriver method to BotMan.
    • Added ability to use BotMan with a local socket.

    Changed

    • Switched from plain text to JSON responses for Slack slash commands, to allow richer message formatting.
    • Moved message matching into a separate Matcher class.

    Removed

    • Removed FacebookPostbackDriver, FacebookOptinDriver and FacebookReferralDriver in favor of the new event API.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.8(Jul 12, 2017)

    [1.5.8]

    Added

    • Allow adding of plain array buttons on Element class (#448)
    • Added Authentication to RedisStorage (#439)

    Fixed

    • Fixes an issue with Facebook attachment detection. (#463)
    Source code(tar.gz)
    Source code(zip)
  • 1.5.7(May 30, 2017)

  • 1.5.6(May 18, 2017)

  • 1.5.5(Apr 24, 2017)

A framework agnostic, multi-gateway payment processing library for PHP 5.6+

Omnipay An easy to use, consistent payment processing library for PHP Omnipay is a payment processing library for PHP. It has been designed based on i

The League of Extraordinary Packages 5.7k Dec 30, 2022
A lightweight framework-agnostic library in pure PHP for part-of-speech tagging

N-ai php pos tagger A lightweight framework-agnostic library in pure PHP for part-of-speech tagging. Can be used for chatbots, personal assistants, ke

Giorgio Rey 8 Nov 8, 2022
Twitch IRC Bots in PHP \o/

laravel-twitch-irc Twitch IRC Bot for laravel applications. This ships with the ability to create custom commands for your bot, with aliases, cooldown

Sam Parton 4 Nov 7, 2022
With the phpBB extension "Hide for Guest" you can hidden selected areas for guests and bots.

phpBB-Hide for Guest Description With "Hide for guest" selected areas are hidden for guests and bots. Requirements php 7.3 or higher phpBB 3.2.0 or hi

Thorsten 2 Dec 15, 2022
Simple opinionated framework agnostic PHP 8.1 enum helper

Enum Helper A simple and opinionated collections of PHP 8.1 enum helpers inspired by archtechx/enums and BenSampo/laravel-enum. This package is framew

Datomatic 52 Jan 1, 2023
⚡ Php snippets, random stuff, demos, functions, fast message system, agnostic and framework free - 100% compactible ;) ⚡

⚡ Php8 FPM Nginx Fast, Scripts, Pearls & Treasures ?? Want to run and test asap ? docker-compose up -d phpgit_php8;ip=$(docker-machine ip default);ech

Benjamin FONTAINE 0 Mar 20, 2022
Contains a few tools usefull for making your test-expectations agnostic to operating system specifics

PHPUnit Tools to ease cross operating system Testing make assertEquals* comparisons end-of-line (aka PHP_EOL) character agnostic Make use of EolAgnost

Markus Staab 1 Jan 3, 2022
WordPress plugin which contains a collection of modules to apply theme-agnostic front-end modifications

Soil A WordPress plugin which contains a collection of modules to apply theme-agnostic front-end modifications. Soil is a commercial plugin available

Roots 1k Dec 20, 2022
Faker-driven, configuration-based, platform-agnostic, locale-compatible data faker tool

Masquerade Faker-driven, platform-agnostic, locale-compatible data faker tool Point Masquerade to a database, give it a rule-set defined in YAML and M

elgentos ecommerce solutions 219 Dec 13, 2022
Simple custom chat bot developing framework for telegram, qq and more in PHP (the best language)

RinoBot RinoBot 是一个为统一聊天机器人扩展开发的框架,编写一份插件用于多种机器人协议。 简体中文 | English ?? 开发中 ?? 暂不适用于生产环境 特性 插件扩展机制 一份代码运行于多平台多协议机器人 并减小开发难度 插件提供 Yaml 配置 供使用者修改 基于机器人 We

LixWorth 3 Apr 18, 2022
This repository demonstrates exemplary implementation of chat using HTTP and Websocket servers in PHP using Kraken Framework components.

This repository demonstrates exemplary implementation of chat using HTTP and Websocket servers in PHP using Kraken Framework components.

Kraken 48 Aug 11, 2021
Sample application to bookmark links, where interface build with Angular.js + Twitter Bootstrap and server powered by PHP with Slim Framework

RESTful Bookmarks PHP Slim TODO: review and update FrontEnd Sample application to bookmark links, where interface build with Angular.js + Twitter Boot

Erko Bridee 50 Dec 15, 2021
Library to build PHP extensions with C++

PHP-CPP The PHP-CPP library is a C++ library for developing PHP extensions. It offers a collection of well documented and easy-to-use classes that can

Copernica 1.3k Dec 24, 2022
QuidPHP/Main is a PHP library that provides a set of base objects and collections that can be extended to build something more specific.

QuidPHP/Main is a PHP library that provides a set of base objects and collections that can be extended to build something more specific. It is part of the QuidPHP package and can also be used standalone.

QuidPHP 4 Jul 2, 2022
Websocket chat room written in PHP based on workerman.

基于workerman的GatewayWorker框架开发的一款高性能支持分布式部署的聊天室系统。

walkor 1.1k Jan 8, 2023
Aplicación de chat usando HTML, CSS, PHP, JS and MySQL.

SYSTEMSGT Codigo fuente de aplicación CHAT - SYSTEMSGT Lenguajes HTML CSS PHP JS MySQL Pre-requisitos ?? Para poder utilizar esta aplicación necesitas

SYSTEMSGT 36 Dec 1, 2022
A Laravel test build by Incline Start-up Agency. Testing Git and framework functions.

Incognito-Confessions A laravel test build by Incline Start-up Agency. Testing Git and framework functions. Description A laravel starter for future t

null 6 Nov 9, 2022
A library for simplifying the PHAR build process.

Box is a library built on the Phar class. It is designed to make it easier to create new phars and modifying existing ones. Features include compacting source files, better custom stub generation, and better OpenSSL signing handling.

Box Project 193 May 16, 2022
You have just downloaded "Messenger-app" [A lightweight, minimalistic real-time chat application]

MESSENGER-APP You have just downloaded "Messenger-app" [A lightweight, minimalistic real-time chat application] Setup To get it working, follow these

Chr1st0ph3r SAB 1 Oct 29, 2021