Every example below is a real, runnable app at examples/<name> in the
Livqeno repo — not a code snippet. Each has its own README with exact
setup steps.
RTC
video-call— a minimal two-participant call built entirely on@ravenkash/rtc's public API.react-video-call— the same call built with@ravenkash/react: join a room, camera/microphone, screen sharing, device selection.mobile-rtc-chat— a real call on a phone (React Native).flutter-rtc-chat— the same, in Flutter.signaling-demo— a single static HTML file exercising the signaling layer directly, no build step.
video-call boils down to this — mint a client from a server-issued
token, join a room, and publish media:
import { createRTCClient } from '@ravenkash/rtc';
const client = createRTCClient({
token: resp.token,
endpoint: resp.endpoint,
iceServers: resp.iceServers,
});
const room = await client.join('room-123');
await room.enableCamera();
await room.enableMicrophone();See RTC → Quickstart for the token-minting side of this and the full room/track API.
Chat
chat— a working chat client on@ravenkash/chatand@ravenkash/react— every message really is round-tripping through Postgres and a WebSocket.rtc-chat—@ravenkash/rtcand@ravenkash/chaton the same screen, doing separate jobs: a call with a chat panel.
Connecting and sending a message is two calls once you have a token:
import { createChatClient } from '@ravenkash/chat';
const chat = createChatClient({ token: resp.token });
await chat.connect({ room: conversation.publicId });
await chat.sendMessage({ text: 'Hello everyone!' });
chat.on('message', (msg) => console.log(msg.senderId, msg.text));See Chat → Quickstart for conversation setup and the full event catalogue.
Live Streaming
live-streaming-demo— a two-browser demo: one host tab publishing camera/microphone, one viewer tab receiving real media, plus live chat and reactions, built entirely on@ravenkash/client'sLiveStreamAPI.
LiveStream.join() gets you both an RTC room and a chat conversation
in one call — the host side looks like this:
import { LiveStream } from '@ravenkash/client';
const stream = await LiveStream.join({
streamId,
role: 'HOST',
rtc: credentials.rtc,
chat: credentials.chat,
});
await stream.room.enableCamera();
await stream.room.enableMicrophone();
// A Livqeno Chat conversation comes attached automatically.
await stream.chat.sendMessage({ text: "We're live!" });See Live Streaming → Quickstart for the viewer side and reactions.
Effects
effects-demo— a single-browser demo of@ravenkash/effects: one real camera track, oneEffectsPipeline, "Original" vs "Processed" video side by side. No RTC room or signaling server needed — it exercises the same pipelinecamera.attachEffects()uses internally, directly.
Build a pipeline and attach it to any published camera track:
import { effects } from '@ravenkash/effects';
const pipeline = effects.createPipeline();
pipeline.add(effects.filters.brightness({ value: 0.2 }));
pipeline.add(effects.filters.saturation({ value: 1.2 }));
const camera = await room.enableCamera();
await camera.attachEffects(pipeline);See Effects → Quickstart for presets and the React hook API.
Server SDKs
node-server— a real Express server minting RTC tokens with@ravenkash/server.python-server— the same, withraven-sdkand FastAPI.
RTC + Chat combined
media-demo— a minimal static page proving real WebRTC media through@ravenkash/rtc, backed by a small FastAPI server usingraven-sdk.