# Overview

[ConnectyCube](https://connectycube.com) JavaScript SDK.

ConnectyCube is a messaging and video calling platform for iOS, Android and JavaScript apps.

Check our [comprehensive guide](https://developers.connectycube.com/js/) for JavaScript SDK.

## Features

- Messaging - first-class messaging API to build 1-1 and group chats, broadcast channels and so on. Different chat attachments are supported in the cloud.
- Video calling - peer-to-peer and group video calling up to 10 people based on modern WebRTC technologies. Various quality settings and audio/video codecs supported.
- Push notifications - never miss your chat messages with automatic push notifications to offline users. Also receive a push to all your devices when somebody calls you in a video chat.
- Authentication & Users - manage all the things related to user accounts handling, authentication, account data, password reminding etc. Integration with your own user base via external auth mechanisms.
- Chat bots - use chat bots to enable users to conversationally interact with your service or your product. Bots are fully automated services.

For more details check the [ConnectyCube features page](https://connectycube.com/features)

## Connect SDK

Simply connect the JS file as a normal script (UMD):

```html
<script src="https://cdn.jsdelivr.net/npm/connectycube@x.x.x/dist/connectycube.min.js"></script>
```

where **x.x.x** is the desired JS SDK version (check for [Releases page](https://github.com/ConnectyCube/connectycube-js-sdk-releases/releases) for all available versions).

Then a window-scoped variable called `ConnectyCube` is created.

Or install the package as node_module:

```bash
npm install connectycube --save
```

or

```bash
yarn add connectycube
```

Add the script to your HTML from `node_modules` (use a path relative to your HTML file):

```html
<script src="~/node_modules/connectycube/dist/connectycube.min.js"></script>
```

CommonJS:

```javascript
const ConnectyCube = require('connectycube');
```

ES modules:

```javascript
import ConnectyCube from 'connectycube';
```

## Initialize the ConnectyCube SDK

```javascript
const credentials = {
  appId: 21,
  authKey: 'A123210A-78AE-1DF9-9DD4-CC321AB6C189',
};

const config = {
  debug: { mode: 1 },
};

ConnectyCube.init(credentials, config);
```

You can create more than one client instance:

```javascript
const cubeSender = new ConnectyCube.ConnectyCube();
const cubeReceiver = new ConnectyCube.ConnectyCube();

cubeSender.init(credentials, config);
cubeReceiver.init(credentials, config);
```

## SSR (Server-Side Rendering) Guide

When using ConnectyCube SDK in SSR environments (e.g., Next.js, Remix), some native Node.js modules like events may cause errors due to differences between Node and browser environments. Here are recommendations to ensure smooth SSR integration:

### Usage

```bash
# With npm
npm install connectycube
npx connectycube patch-ssr      # Apply SSR patches
# npx connectycube revert-ssr   # Revert SSR patches

# With yarn
yarn add connectycube
yarn connectycube patch-ssr     # Apply SSR patches
# yarn connectycube revert-ssr  # Revert SSR patches
```

This script applies fixes to make the SDK compatible with SSR environments.

## Supported platforms

- Browser
- Node.js
- React Native
- Apache Cordova
- Electron

## Contribution

See more information at [CONTRIBUTING.md](.github/CONTRIBUTING.md)

## License

Apache 2.0
