tatter / chat
Embedded chat widget for CodeIgniter 4
Fund package maintenance!
tattersoftware
paypal.me/tatter
Installs: 1 719
Dependents: 0
Suggesters: 0
Security: 0
Stars: 19
Watchers: 4
Forks: 6
Open Issues: 3
pkg:composer/tatter/chat
Requires
- php: ^7.4 || ^8.0
- codeigniter4/authentication-implementation: 1.0
- tatter/frontend: ^1.0
- tatter/users: ^1.0
Requires (Dev)
- codeigniter4/framework: ^4.1
- tatter/imposter: ^1.0
- tatter/tools: ^2.0
This package is auto-updated.
Last update: 2025-10-17 21:19:08 UTC
README
Embedded chat widget for CodeIgniter 4
Quick Start
- Install with Composer:
> composer require tatter/chat - Update the database:
> php spark migrate --all - Publish asset files:
> php spark publish - Add Chat JS to your layout:
<script><?= view('Tatter\Chat\Views\javascript') ?></script> - Add a chat to any view:
<?= chat('my-first-chat') ?>
Features
Chat allows developers to add a lightweight Bootstrap-style chat client to any page.
Installation
Install easily via Composer to take advantage of CodeIgniter 4's autoloading capabilities and always be up-to-date:
> composer require tatter/chat
Or, install manually by downloading the source files and adding the directory to app/Config/Autoload.php.
Once the files are downloaded and included in the autoload, run any library migrations to ensure the database is setup correctly:
> php spark migrate --all
Assets
Chat has JavaScript code as well as asset dependencies that need to be included
with any view that has a conversation on it. Assets are managed by the
Tatter\Assets library; you can
publish all files with CodeIgniter's Publisher: spark publish. Be sure to configure
the Assets filter and apply it to routes (see docs).
Authentication
Chat uses Tatter\Users to determine participants username and display name. You must
be sure to include a package that provides codeigniter4/authentication-implementation
(like Shield) or make your own (see Authentication
for framework requirements).
Usage
The easiest way to start a chat is with the helper. Load the helper file (helper('chat'))
and then use the chat($uid, $title) command wherever you would use a partial view:
<div id="main"> <h3>Yellow Widgets</h3> <p>Main product info here!</p> <aside> <?= chat('product-7', 'Live Chat') ?> </aside> ...
The parameters to chat() are optional, and excluding them will load a one-time chat with
a random UID (e.g. for a one-time site visitor).
Extending
Conversations are stored and loaded from the database with the ConversationModel, and
most of the logic is handled by the Entities. For example, a Conversation entity can
$conversation->addUser($userId) to join or refresh a user and get back a Participant.
A Participant can $participant->say('hello world') to add a Message.