{"id":15198339,"url":"https://github.com/pubnub/chat-engine","last_synced_at":"2025-10-02T13:31:15.885Z","repository":{"id":57197239,"uuid":"70075000","full_name":"pubnub/chat-engine","owner":"pubnub","description":"Object oriented event emitter based framework for building chat applications in Javascript.","archived":true,"fork":false,"pushed_at":"2020-04-07T17:45:02.000Z","size":21323,"stargazers_count":97,"open_issues_count":8,"forks_count":55,"subscribers_count":22,"default_branch":"develop","last_synced_at":"2025-01-21T05:11:30.439Z","etag":null,"topics":["chat","chat-engine","chat-server","chat-widget","pubnub","pubsub","socket-io","websocket"],"latest_commit_sha":null,"homepage":"https://www.pubnub.com/developers/chat-resource-center/","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pubnub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-05T15:47:03.000Z","updated_at":"2024-10-09T09:18:26.000Z","dependencies_parsed_at":"2022-08-30T22:52:28.730Z","dependency_job_id":null,"html_url":"https://github.com/pubnub/chat-engine","commit_stats":null,"previous_names":["pubnub/open-chat-framework"],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pubnub%2Fchat-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pubnub%2Fchat-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pubnub%2Fchat-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pubnub%2Fchat-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pubnub","download_url":"https://codeload.github.com/pubnub/chat-engine/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235000695,"owners_count":18920223,"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","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":["chat","chat-engine","chat-server","chat-widget","pubnub","pubsub","socket-io","websocket"],"created_at":"2024-09-28T01:02:53.438Z","updated_at":"2025-10-02T13:31:10.302Z","avatar_url":"https://github.com/pubnub.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Deprecation Notice\nChatEngine has been deprecated with no plans for additional releases. Support for the ChatEngine SDK will end on July 16, 2021. If you have questions about ChatEngine, please contact us at support@pubnub.com.\nPlease visit our newer chat product, [PubNub Chat](https://www.pubnub.com/products/pubnub-chat/). \n\n# [PubNub ChatEngine Framework](https://pubnub.github.io/chat-engine/)\n\n[![](https://data.jsdelivr.com/v1/package/npm/chat-engine/badge)](https://www.jsdelivr.com/package/npm/chat-engine)\n[![Build Status](https://travis-ci.org/pubnub/chat-engine.svg?branch=master)](https://travis-ci.org/pubnub/chat-engine)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d8b6e41d61164170873bb8fe79bab020)](https://www.codacy.com/app/PubNub/chat-engine?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=pubnub/chat-engine\u0026utm_campaign=badger)\n[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/d8b6e41d61164170873bb8fe79bab020)](https://www.codacy.com/app/PubNub/chat-engine?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=pubnub/chat-engine\u0026utm_campaign=badger)\n\nPubNub ChatEngine is an object-oriented event emitter based framework for building chat applications in Javascript. It reduces the time to build chat applications drastically and provides essential components like typing indicators, online presence monitoring and message history out of the box.\n\nThe real-time server component is provided by PubNub. ChatEngine is designed to be extensible and includes a plugin framework to make adding new features simple.\n\nFor more information on building chat applications with PubNub, see our \n[Chat Resource Center](http://www.pubnub.com/developers/chat-resource-center/).\n\n# Documentation\n\nYou can find the full docs on [the documentation website](https://pubnub.github.io/chat-engine/).\n\n# Getting Started\n\n## Prerequisites\n\n* NodeJS\n* Twitter Bootstrap\n* jQuery\n* ES6\n\n## PubNub Account Set Up\n\nTo set up ChatEngine on PubNub, one must first set up a PubNub Key. The following steps outlines how to manually set up a PubNub Key to work with ChatEngine client-side SDKs.\n\n### Sign Up for a PubNub Account\nIf you don't already have an account, you can create one for free [here](https://dashboard.pubnub.com/).\n\n### Set Up the REST API Service using PubNub Functions\nThe ChatEngine framework and client-side SDKs interact with a REST API service that runs as a PubNub Function. \n\n*You'll need to set up the function on your PubNub Account before you can use the SDKs.*\n\n[Follow the ChatEngine Server Setup Instructions](https://github.com/pubnub/chat-engine-server).\n\n## Download Code\n\n### Create a new NPM project\n\nSince we'll be installing dependencies, it's helpful to create a new ```package.json``` to keep track of all of the packages we're going to install.\n\nIn your project directory, run this command to create a new package. Complete the interactive set up guide and we'll be ready to go.\n\n```\nnpm init\n```\n\nThat'll create a ```package.json``` in your project directory.\n\n```json\n{\n  \"name\": \"chat-engine-tutorial\",\n  \"version\": \"0.0.1\",\n  \"description\": \"An example PubNub ChatEngine Tutorial\",\n  \"main\": \"index.js\",\n  \"author\": \"Ian Jennings\"\n}\n```\n\n### Install PubNub ChatEngine\n\nAlright, now for the part you've probably never done before! Install PubNub ChatEngine by running:\n\n```sh\nnpm install chat-engine@latest --save\n```\n\n# Additional Resources\n\n## Plugins\n\nCheck out the [jQuery Kitchen Sink](https://github.com/pubnub/chat-engine-examples/tree/master/jquery/kitchen-sink) and [Angular Kitchen Sink](https://github.com/pubnub/chat-engine-examples/tree/master/angular/flowtron) examples to see plugins in action.\n\n* [Image Uploads](https://github.com/pubnub/chat-engine-uploadcare) - Uses UploadCare service to upload images and render them in chats. [Example](https://raw.github.com/pubnub/chat-engine-uploadcare/master/example/).\n* [Markdown Support](https://github.com/pubnub/chat-engine-markdown) - Render Markdown in HTML when receiving messages. [Example](https://raw.github.com/pubnub/chat-engine-markdown/master/example/).\n* [Mute Users](https://github.com/pubnub/chat-engine-muter) - Allows the current user to stop receiving events from other users. [Example](https://raw.github.com/pubnub/chat-engine-muter/master/example/).\n* [Online User Search](https://github.com/pubnub/chat-engine-online-user-search) - A simple way to search through the list of users online in the chat. [Example](https://raw.github.com/pubnub/chat-engine-online-user-search/master/example/).\n* [Typing Indicator](https://github.com/pubnub/chat-engine-typing-indicator) - Provides convenience methods that fire when a user starts or stops typing. [Example](https://github.com/pubnub/chat-engine-typing-indicator/tree/master/example)\n* [Unread Messages](https://github.com/pubnub/chat-engine-unread-messages) - Allows you to mark a chat as being in the background and increments a counter as events are sent to it. [Example](https://raw.github.com/pubnub/chat-engine-online-unread-messages/master/example/).\n* [Desktop Notifications](https://github.com/pubnub/chat-engine-desktop-notifications) - Uses HTML5 Notification API to send \"toaster\" updates.\n* [Emoji Support](https://github.com/pubnub/chat-engine-emoji) - Uses images as a fallback for devices that might not yet support :poop:.\n* [Event Status and Read Receipts](https://github.com/pubnub/chat-engine-event-status) - Emits additional events when someone reads a receives and/or reads a message.\n* [Gravatar Support](https://github.com/pubnub/chat-engine-gravatar) - Uses Gravatar service to create an avatar based on user state information.\n* [Random Usernames](https://github.com/pubnub/chat-engine-random-username)- A plugin that gives every user a random username combining color and an animal.\n\n## Videos\n\n* [ChatEngine Intro](https://www.youtube.com/watch?v=o529w2ABH6s)\n* [5 Minute ChatEngine Tutorial](https://www.youtube.com/watch?v=sUUekUsfed4)\n* [Chat in 30 Lines of Code Webinar](https://www.youtube.com/watch?v=jnF9fLo7xfk)\n\n## Tutorials\n\n### Javascript\n* [Getting Started tutorial](https://github.com/pubnub/chat-engine-tutorial).\n* [Chat](https://github.com/pubnub/chat-engine-examples/blob/master/javascript/chat.html) - Really simple chat example. The \"hello world\" of ChatEngine.\n* [Online List](https://github.com/pubnub/chat-engine-examples/blob/master/javascript/online-list.html) - No chats, just renders who is online. See the Kitchen Sinks for how to combine this with private chats.\n\n### React Native + Mobile\n\n* [React Native Example](https://github.com/pubnub/chat-engine-examples/tree/master/react-native) - Made with ```create-react-app```.\n* [React Native Components](https://github.com/pubnub/chat-engine-react-native) - Premade components for rendering Chats, Messages, Users, and more.\n* [Integrating into an existing iOS App](https://www.pubnub.com/docs/chat-engine/samples/ios) - Guide on adding ChatEngine React native app into iOS.\n* [Integrating into an existing Android App](https://www.pubnub.com/docs/chat-engine/samples/android) - Guide on adding ChatEngine React Native app in Android.\n\n### React\n\n* [React](https://github.com/pubnub/chat-engine-examples/tree/master/react) - Bare bones react web example.\n\n### Vue\n\n* [Vue Guide](https://www.pubnub.com/blog/introducing-the-chatengine-plugin-for-vue/) - Guide on using ChatEngine and Vue together. Uses the following resources.\n* [Vue Example](https://github.com/ajb413/chat-engine-vue) - Full featured ChatEngine vue example.\n* [Vue Plugin](https://github.com/ajb413/vue-chat-engine) - ChatEngine plugin for vue.\n\n### Angular\n\n* [Angular Simple](https://github.com/pubnub/chat-engine-examples/tree/master/angular/simple) - Angular \"Hello World\" app. Simple app that uses a custom Angular plugin to render when anything updates.\n* [Angular Kitchen Sink](https://github.com/pubnub/chat-engine-examples/tree/master/angular/flowtron) - The largest demo app out there, almost a complete Desktop Team Chat clone (Slack, Stride, Flowdock). Persistent URLs and renders into a real desktop app with Electron!\n\n### jQuery\n\n* [jQuery Simple](https://github.com/pubnub/chat-engine-examples/tree/master/jquery/simple) - jQuery ChatEngine \"Hello World\" app. A simple app where everyone chats together.\n* [jQuery Kitchen Sink](https://github.com/pubnub/chat-engine-examples/tree/master/jquery/kitchen-sink) - Huge example that uses most ChatEngine features. Has an online list that spawns new chats when you click on usernames.\n\n### 3rd Party Authentication\n\n* [Facebook Login](https://github.com/pubnub/chat-engine-examples/blob/master/javascript/facebook-login.html) - Use Facebook Profiles with ChatEngine.\n\n### NodeJS + Chatbot\n\n* [NodeJS ChatBot](https://github.com/pubnub/chat-engine-examples/blob/master/nodejs/bot.js) - An example bot that responds to messages and emulates typing. Works with the jQuery Kitchen Sink example by default.\n\n# Development\n\n## Cloning\n\nClone repos (chat-engine and plugins).\n\nAll repos should be siblings of one another. This is required for rendering docs\nproperly.\n\n```\nchat-engine\nchat-engine-desktop-notifications\nchat-engine-emoji\nchat-engine-examples\n//...\n```\n\n## Setting up the Environment\n\n```\nnvm use v6\n```\n\nRun ```http-server``` from my ```/development``` directory which has all chat-engine repos:\n\n\n```cd chat-engine```\n\n```node server.js```\n\nLoad http://localhost:8080 in browser and navigate to /chat-engine-examples/jquery/kitchen-sink\n\n## Compiling\n\nRun ```gulp``` to compile, but you should probably run ```gulp watch``` to get consistent changes.\n\n## Running Tests\n\nYou will need to assign environment variables ```PUB_KEY_0``` and ```SUB_KEY_0``` to your own PubNub keys. Add these variables into your ```.bashrc``` or ```.zshrc```.\n\n```sh\n# pubnub chatengine keys\nexport PUB_KEY_0=\"YOUR PUBNUB PUBLISH KEY\"\nexport SUB_KEY_0=\"YOUR PUBNUB SUBSCRIBE KEY\"\n```\n\nThen, in the root folder run:\n\n```\ngulp test\n```\n\n## Releasing a patch (chat engine and plugins)\n\n```\nnpm version patch \u0026\u0026 git push origin master --tags\n```\n\n# Support\n\n- If you **need help**, have a **general question**, or to file a **bug**, contact \u003csupport@pubnub.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpubnub%2Fchat-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpubnub%2Fchat-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpubnub%2Fchat-engine/lists"}