Traditional video conferencing applications like Zoom are facing mounting challenges. The surge in user base has led to skyrocketing compute costs, straining their infrastructure. This, coupled with growing user concerns about privacy, has created a less-than-ideal user experience.
One of the biggest issues is latency. Relying on centralized servers, especially for geographically dispersed users, can create bottlenecks, leading to lag and choppy video calls.
But what if there was a way to ensure smoother, more reliable streaming by introducing a decentralized node (acting as servers) architecture powered by a community?
The future is not centralized or controlled by a small number of people. The future is distributed, democratic, and in the hands of the crowd. - William Gibson
Content of Article
Let's have a look at what topics we are going to cover in this article:-
What is Huddle01?
Functionalities of Huddle01
What is Huddle01 SDK?
Why to choose Huddle01 SDKs?
Recent version updates
Project ideas to build
Conclusion
Resources to start building with Huddle01's SDKs
What is Huddle01?
Huddle01 is a new player in the real-time communication (RTC) game, specifically video conferencing. It is a decentralized physical infrastructure network (DePIN) on a mission to democratize digital connectivity, primarily audio and video conferencing.
The core principle of Huddle01 is the "people-powered" network. Users with spare bandwidth on their devices can contribute to the network, becoming "Node Operators."
Huddle01 estimates a potential savings of up to 95% on server costs compared to giants like Amazon Web Services (AWS). This significant reduction is achieved by leveraging the collective power of the decentralized network, eliminating the need for expensive centralized server infrastructure.
Huddle01 creates a two-sided marketplace for bandwidth:
Demand Side: Users looking for a seamless video conferencing experience utilize the Huddle01 platform, a real-time video and audio application. They can also leverage the Huddle01 SDK, an alternative to popular options like Agora. This existing user base (3 million+ meeting minutes and 35,000+ users) demonstrates the demand for the platform.
Supply Side: Node Operators contribute their unused bandwidth to the network, earning potential rewards for their contribution. The waitlist of over 1,000 nodes signifies the growing interest in this model.
This two-sided marketplace is coordinated and governed by the $HUDL token. The token's specific role within the network (e.g., used for rewarding node operators, incentivizing network participation, or voting on governance decisions) is likely detailed in Huddle01's documentation.
Huddle01's goal is to create a future where communication has no limitations, and it encourages users to supply their unused bandwidth to power audio/video calls across the globe.
Leading VCs backing the platform include LongHash Ventures, Consenys, Protocol Labs, and angel investors Sandeep Nailwal, Balaji Srinivasan, and Juan Benet.
Huddle01 Functionalities
Before telling you why you might choose Huddle01's SDK, let's unpack the key concepts and terms you'll encounter when using it in your projects:
Room: This is the virtual space where your Huddle01 meeting takes place. Imagine it as a digital conference room. Each room has a unique identifier
(roomID)
generated when it's created. There's no expiration on a room, so you can host multiple meetings within the same space, one at a time.Peer: Each participant in a room is considered a peer. This object holds all the media streams (audio and video) for that participant and is identified by a unique
peerId
. Every peer is linked to a specific room.MediaStream & MediaStreamTrack: These terms represent the actual audio and video content being shared during a call. Think of a MediaStream as a bundle that can contain both audio and video tracks. Each track is a separate stream, allowing for independent control (e.g., muting your microphone). These streams are associated with their respective peer object.
When you join a room, everything related to your participation is referred to as "local." This includes your peer object (localPeer)
, and your individual audio and video streams (localAudio and localVideo)
.
All other participants within the same room are considered "remote." To perform any actions related to another user, you'll need their specific peerId
. This allows you to access information like their remotePeer
object, and their audio/video streams (remoteAudio and remoteVideo)
.
Huddle01 goes beyond just audio and video. Peers can also send text messages to each other within a room. These messages are limited to 280 characters and are called "data messages." You can add extra information to Rooms and Peers using "metadata." This is a flexible way to store additional details relevant to your specific use case. The SDK provides methods to access and modify this metadata.
A Room can be in one of six different states at any given time
idle: The room is created and ready for participants to join.
connecting: You or someone else is attempting to join the room.
connected: You've successfully joined the room and are ready to participate.
failed: There was an issue joining the room (e.g., a network problem).
left: You've chosen to leave the room.
closed: The room has been closed by the host or administrator.
Now that you have a solid understanding of these core concepts, we can explore the benefits of Huddle01's SDK and the reasons why you might choose to integrate it into your project.
What is Huddle01 SDK?
An SDK (Software Development Kit) is a set of tools, libraries, and documentation that developers can use to build applications or software. It includes programming interfaces, code samples, and development tools that enable developers to create applications for a specific platform or framework. SDKs can be used for various purposes, such as building mobile apps, web applications, or desktop applications, and they often provide pre-built components and modules that developers can use to speed up their development process.
Huddle01 SDK is a suite of developer-friendly software development kits that enable the creation of next-generation real-time audio and video applications. It is designed to be used in the development of cross-platform applications, including web3 social apps, web3 scheduling services, and web3 communication inboxes.
The SDK is built on Huddle01's decentralized real-time communication (dRTC) network, which aims to provide uninterrupted digital connectivity between users, making collaboration possible even across remote locations.
A decentralized real-time communication (dRTC) network is a type of communication network that aims to break down the siloed architecture of centralized servers by leveraging globally distributed resources. It is built on a decentralized architecture that allows users to communicate directly with each other without relying on central servers, reducing latency and increasing privacy.
dRTC networks use a decentralized messaging framework that supports various messaging patterns, such as publish/subscribe and request/response, and enables interoperability between different messaging protocols. This approach to communication is designed to be more private, secure, and scalable than traditional centralized communication systems, and can be used to power applications like video conferencing, chat, and more.
Huddle01 offers SDKs for various programming languages, including:
Vanilla JavaScript
React Js
React Native
Flutter
Server
Vanilla JavaScript Walkthrough :
Installation :
By using script tag
<script src="https://unpkg.com/@huddle01/web-core@umd/dist/index.global.js"></script>
By using npm (other package managers available)
npm install @huddle01/web-core
Methods usage example :
IIFE/UMD
<script src="https://unpkg.com/@huddle01/web-core@umd/dist/index.global.js"></script>
<script>
let client;
const init = async () => {
client = new HuddleWebCore.HuddleClient({
projectId: "YOUR_PROJECT_ID",
},
});
const room = await client.joinRoom({
roomId: "YOUR_ROOM_ID",
token: "YOUR_ACCESS_TOKEN",
});
};
</script>
ESM/CommonJS
import { HuddleClient } from '@huddle01/web-core';
const huddleClient = new HuddleClient({
projectId: "YOUR_PROJECT_ID"
})
huddleClient.joinRoom({
roomId: "YOUR_ROOM_ID",
token: "YOUR_ACCESS_TOKEN"
});
React SDK Walkthrough :
Installation
npm install @huddle01/react
or
yarn add @huddle01/react
Initializing the SDK
import { HuddleProvider, HuddleClient } from '@huddle01/react';
const huddleClient = new HuddleClient({
projectId: env.NEXT_PUBLIC_PROJECT_ID,
options: {
activeSpeakers: {
size: 8,
},
},
});
...
<HuddleProvider client={huddleClient}>
<App />
</HuddleProvider>
...
Joining a Room
import { useRoom } from '@huddle01/react/hooks';
const { joinRoom } = useRoom({
onJoin: () => {
console.log('Joined room');
}
});
// join room
joinRoom({
roomId: "YOUR_ROOM_ID",
token: "YOUR_TOKEN"
});
React SDK Walkthrough :
Make sure to add camera and mic permissions to your AndroidManifest.xml
file (for Android) and Info.plist
file (for iOS)
pnpm i @huddle01/react @huddle01/server-sdk react-native-get-random-values react-native-webrtc
ornpm i @huddle01/react @huddle01/server-sdk react-native-get-random-values react-native-webrtc
oryarn add @huddle01/react @huddle01/server-sdk react-native-get-random-values react-native-webrtc
Configuring the SDK (add this at the top of index.js)
import { AppRegistry } from 'react-native';
import 'react-native-get-random-values';
import { registerGlobals } from 'react-native-webrtc';
import App from './App';
registerGlobals();
AppRegistry.registerComponent(appName, () => App);
Initialize the project
import { HuddleClient, HuddleProvider } from '@huddle01/react';
const huddleClient = new HuddleClient({
projectId: env.NEXT_PUBLIC_PROJECT_ID,
options: {
activeSpeakers: {
size: 8,
},
},
});
const Parent = () => {
return (
<HuddleProvider key="huddle01-provider" client={huddleClient}>
<App />
</HuddleProvider>
);
};
Joining and Leaving the room
import { useRoom } from '@huddle01/react/dist/hooks';
import {Button, View} from 'react-native';
const App = () => {
const { joinRoom, leaveRoom } = useRoom({
onJoin: () => {
console.log('Joined the room');
},
onLeave: () => {
console.log('Left the room');
},
});
return (
<View>
<Button
title="Join Room"
onPress={() => {
joinRoom({
roomId: 'YOUR_ROOM_ID',
token: 'YOUR_ACCESS_TOKEN'
})
}}
/>
<Button title=" Leave Room" onPress={leaveRoom} />
</View>
);
};
Flutter SDK Walkthrough :
Installation
flutter pub add huddle01_flutter_client
Permissions Setup - Android (inside AndroidManifest.xml)
<uses-feature android:name="android.hardware.camera"/>
<uses-feature android:name="android.hardware.camera.autofocus"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
Ios (inside Info.plist)
<key>NSMicrophoneUsageDescription</key>
<string>{YOUR_SDK_APP} wants to use your microphone</string>
<key>NSCameraUsageDescription</key>
<string>{YOUR_SDK_APP} wants to use your camera</string>
<key>NSLocalNetworkUsageDescription</key>
<string>{YOUR_SDK_APP} App wants to use your local network</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>{YOUR_SDK_APP} needs access to bluetooth to connect to nearby devices.</string>
Initialization
import 'package:huddle01_flutter_client/huddle01_flutter_client.dart';
String projectId = 'YOUR-PROJECT-ID';
String roomId = 'YOUR-ROOM-ID';
// Initialize your huddleClient
HuddleClient huddleClient = HuddleClient(projectId);
These SDKs are designed to be scalable and customizable, allowing developers to tailor the experience to their needs.
Web SDKs: For web applications, Huddle01 provides React and Vanilla JavaScript SDKs. React, being the most popular web development framework, is a perfect choice for building efficient and scalable web apps. The Huddle01 React SDK allows developers to incorporate audio/video communication features into their web applications in just seven steps.
Mobile SDKs: For mobile app development, Huddle01 offers React Native and Flutter SDKs. These tools cater to the growing popularity of cross-platform mobile app development. With Huddle01's mobile SDKs, developers can integrate features like video and audio calls, screen sharing, and chat capabilities into their mobile apps, resulting in high-quality and reliable user communication experiences.
Server SDKs: For server-side functionalities, Huddle01 offers a dedicated Server SDK. This empowers developers to handle secure server administrative tasks, such as creating peer access tokens and controlling meeting recordings and live streams.
The Huddle01 SDK offers features such as multi-region cascading, scalability of up to 10,000 peers, and a 90% reduction in latency. It also supports low-code development, allowing developers to quickly build and embed video chat functionality into their websites or applications. The SDK includes tools for generating peer access tokens, starting and stopping meeting recordings, and managing live streams.
Why to choose Huddle01 SDKs?
Huddle01 SDKs are chosen for their developer-friendly features, customizability, and scalability. They offer a suite of tools that enable cross-chain audio and video communication with just a quick plug-in and provide features like audio spaces, video calls, token-gated rooms, recording & live streaming, and more.
The SDKs are built for better developer experience and allow for high-quality audio/video communication capabilities on dApps at a blazingly fast speed, with the ability to tailor the experience as per the needs of the application.
Huddle01's SDK offers several key features for developers:
Cross-chain audio and video communication: Huddle01's SDK enables seamless integration of audio and video communication functionality on decentralized applications (dApps) across various blockchain networks. The SDK can be used to create audio rooms for applications that require a feature similar to Twitter Spaces.
Token Gated Rooms: Huddle01's APIs can be used to create token-gated rooms for dApps, enabling token gating using various tokens such as ERC 20, ERC 1155, ERC 721, and multiple chains like Polygon, Ethereum, Arbitrum, and BSC.
Customizability & Brand Identity: The SDK is fully customizable and integrates seamlessly with an app's design and functionality, allowing developers to create a cohesive user experience and brand identity.
Low Latency: Huddle01's SDK offers low latency, which benefits users located in areas with limited bandwidth by ensuring they can participate in real-time conversations without being disadvantaged by audio delays.
Faster Time to Market: Huddle01's SDK provides efficient troubleshooting and readily available resources, which can accelerate the release and deployment of dApps.
24/7 Engineering Support: Developers can interact with the Huddle01 development team for solutions to integration issues, saving valuable development time and effort.
Reduced Development Time: By leveraging pre-built functionalities and streamlined integration, developers can focus on building their core application logic and user experience, leading to faster development cycles.
Simplified Code Management: The modular nature of SDKs promotes clean and maintainable code, making it easier to manage and scale applications over time.
By abstracting away the complexities of the decentralized network, developers can dedicate their efforts to creating innovative and engaging communication experiences for their users.
Additionally, Huddle01 offers a CLI tool called iFrame that lets developers clone a sample application built on top of the SDK and customize it to meet their requirements.
Huddle01 iFrame is a solution provided by Huddle01 that allows users to easily incorporate Huddle01's Web App into their website. With just a few lines of code, developers can embed the Huddle01 Web App within their application and start collaborating with their team or clients in real time.
This solution is particularly useful for those who want to host meetings, share presentations, or discuss projects on their website without the need for complex wired deployments or high maintenance costs associated with traditional video conference equipment.
The Huddle01 iFrame solution is designed to be seamless and user-friendly, allowing developers to customize the iFrame to match their website's branding and ensure a smooth user experience for their visitors. It is available for both Vanilla JS and React frameworks, providing flexibility for developers to choose the best option for their projects.
Using Huddle01 iFrame, developers can leverage the powerful features of Huddle01's Web App, such as real-time collaboration tools, interactive whiteboards, and community-driven learning features, without the need for extensive development or maintenance efforts. This makes it an attractive option for developers looking to enhance their website's functionality and user experience without the added burden of managing complex video conferencing infrastructure.
Recent version updates
Huddle01's SDK has undergone significant updates in version 2.0, which is designed to improve scalability, reliability, and performance. Some of the key changes include:
The transition from socket.io to uWebSockets for improved performance and reliability.
The removal of third-party state management and the use of simple event listeners for handling local states internally.
The switch from JSON to Protocol Buffers reduces message payload sizes for interactions between the client and server.
The addition of AccessTokens for Peers enables developers to incorporate custom business logic and implement first-class authentication control using any server-side authentication method.
The availability of custom metadata for the Room, individual Peers, and their media streams, enables more creative and custom use cases.
In version 1.0, Huddle01's SDK was built for both web and mobile applications, offering a comprehensive suite of methods and event listeners for real-time audio and video communication. The SDK was designed to be scalable and customizable, with a focus on enhancing the developer experience and addressing feedback from the community[3].
The release of Huddle01 SDK v2.0 in February 2024 introduced several updates for better performance, including screenshare functionality for the Mobile App.
Project Ideas to build using Huddle01 SDK
1. A Learning Hub
Develop a next-generation online learning platform that allows teachers and students to interact in real-time. It should offer interactive classrooms, real-time collaboration tools, and a focus on community-driven learning.
Target Audience:
Educators & Trainers: This platform would empower educators to conduct engaging online classes with features like:
Interactive Whiteboards: Collaborate with students on virtual whiteboards in real-time, explaining concepts visually.
Breakout Rooms: Facilitate group discussions and project work through dedicated breakout rooms.
Real-time Polling & Q&A: Enable active learning with live polls and a dedicated Q&A section.
Students & Learners: Huddle02 offers students an immersive learning experience with:
Low-Latency Audio/Video: Enjoy seamless communication with instructors and classmates.
Collaborative Tools: Work on projects together using shared documents and whiteboards.
Community Learning Features: Connect with other learners, form study groups, and participate in discussions.
Benefits:
Huddle01's decentralized network potentially reduces platform costs compared to traditional solutions.
Interactive features and real-time communication enhance the learning experience.
Foster a sense of community and collaboration among students.
2. HuddleCast:
HuddleCast provides a platform for live, interactive broadcasts with features that empower creators and engage audiences.
Target Audience:
Content Creators & Streamers: HuddleCast offers features specifically designed for them, including:
High-Quality Audio/Video: Broadcast using the potential benefits of Huddle01's decentralized network for smoother streaming.
Live Chat & Polling: Engage directly with your audience through real-time chat and interactive polls.
Monetization Options: Integrate a tokenized system (potentially using $HUDL) to allow viewers to tip creators or unlock exclusive content.
Viewers & Fans: HuddleCast offers an interactive viewing experience with:
Real-time Chat: Participate in live discussions with other viewers and the host.
Interactive Polls & Q&A: Influence the show and have your voice heard.
Direct Support: Potentially send tokens to support creators and access exclusive content.
Benefits:
Enhanced Fan Engagement: Interact directly with creators and participate in real-time discussions.
The tokenized system could incentivize content creation and audience participation.
3. HuddlePlay
HuddlePlay utilizes Huddle01's SDK to create a platform for decentralized online gaming with a focus on community ownership and governance.
Target Audience:
Game Developers: HuddlePlay offers a platform for building innovative games with:
Decentralized Communication: Leverage Huddle01's network for real-time in-game voice chat with potentially lower latency.
Community Governance: Integrate tokenized systems to allow players to participate in game development decisions.
NFT Integration: Explore possibilities for integrating NFTs (Non-Fungible Tokens) for in-game assets and player ownership.
Gamers: HuddlePlay offers gamers a unique experience:
Community-Owned Games: Potentially participate in shaping the future of the games they play.
Lower Costs: Decentralized infrastructure might lead to potentially lower server costs in some cases.
Play-to-Earn Mechanics: Explore the possibility of earning tokens through gameplay and contributing to the community.
Benefits:
It’ll empower players to have a voice in the games they love.
Decentralized infrastructure might offer cost benefits for developers and potentially lower in-game costs for players.
It’ll open doors for new types of games built on a community-owned and governed platform.
The Huddle01 Advantage
In conclusion, choosing Huddle01 for your next high-traffic video conferencing project offers a compelling combination of benefits:
The decentralized network architecture has the potential to significantly reduce server costs compared to traditional centralized providers.
The competitive landscape of the decentralized network can lead to lower data transfer costs.
The well-equipped SDK empowers developers with the tools they need to build robust and customizable video conferencing experiences.
If you're looking for a cost-effective and feature-rich solution for your next high-traffic video meeting application, Huddle01 is worth exploring.
Developer Resources
Huddle01 offers a range of resources for developers using its SDK:
Meet With Wallet (Meeting Schedular for WEB3),
Peer Code (Developer Collaborative Platform),
HuddleScribe (a note-taking and transcription solution that supports up to 77 languages and enables live captions)