Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/fishjam-server
2 changes: 1 addition & 1 deletion api/protos
2 changes: 1 addition & 1 deletion api/room-manager
2 changes: 1 addition & 1 deletion docs/examples/react-native.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -178,4 +178,4 @@ Browse the full source: [video-player on GitHub](https://github.com/fishjam-clou
- Follow the [React Native Quick Start](../tutorials/react-native-quick-start) if you haven't set up a project yet
- Learn how to [handle screen sharing](../how-to/client/screensharing)
- Learn how to [implement background streaming](../how-to/client/background-streaming)
- Learn how to [work with data channels](../how-to/features/text-chat)
- Learn how to [work with data channels](../how-to/client/text-chat)
6 changes: 3 additions & 3 deletions docs/examples/react.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ yarn dev
The room component uses `usePeers` to retrieve all participants and renders their video streams using `VideoPlayer` and audio with `AudioPlayer`.

:::note
This example requires a **peer token** to connect. You need to obtain one yourself — either via the [Sandbox API](../how-to/features/sandbox-api-testing#step-2-create-a-room-and-get-peer-tokens) for quick testing, or by setting up your own backend with the [Fishjam Server SDK](../tutorials/backend-quick-start).
This example requires a **peer token** to connect. You need to obtain one yourself — either via the [Sandbox API](../how-to/backend/sandbox-api-testing#step-2-create-a-room-and-get-peer-tokens) for quick testing, or by setting up your own backend with the [Fishjam Server SDK](../tutorials/backend-quick-start).
:::

Browse the full source: [minimal-react on GitHub](https://github.com/fishjam-cloud/examples/tree/main/web-react/minimal-react)
Expand Down Expand Up @@ -153,7 +153,7 @@ Smelter requires WebAssembly support — use a modern browser.
The `useSmelter` hook manages the Smelter engine lifecycle. `registerInput` connects the local camera feed and `registerOutput` routes the composited result back into Fishjam as a custom track.

:::note
This example requires a **peer token** to connect. You need to obtain one yourself — either via the [Sandbox API](../how-to/features/sandbox-api-testing#step-2-create-a-room-and-get-peer-tokens) for quick testing, or by setting up your own backend with the [Fishjam Server SDK](../tutorials/backend-quick-start).
This example requires a **peer token** to connect. You need to obtain one yourself — either via the [Sandbox API](../how-to/backend/sandbox-api-testing#step-2-create-a-room-and-get-peer-tokens) for quick testing, or by setting up your own backend with the [Fishjam Server SDK](../tutorials/backend-quick-start).
:::

Browse the full source: [minimal-smelter on GitHub](https://github.com/fishjam-cloud/examples/tree/main/web-react/minimal-smelter)
Expand Down Expand Up @@ -189,5 +189,5 @@ Browse the full source: [fishjam-chat on GitHub](https://github.com/fishjam-clou
## Next steps

- Follow the [React Quick Start](../tutorials/react-quick-start) if you haven't set up a project yet
- Learn how to [work with data channels](../how-to/features/text-chat)
- Learn how to [work with data channels](../how-to/client/text-chat)
- Learn how to [implement screen sharing](../how-to/client/screensharing)
6 changes: 3 additions & 3 deletions docs/explanation/_category_.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"label": "Explanation",
"position": 4,
"label": "Concepts",
"position": 5,
"link": {
"type": "generated-index",
"title": "Explanation",
"title": "Concepts",
"description": "Big-picture explanations of higher-level Fishjam concepts. Most useful for building understanding of a particular topic.",
"slug": "/explanation"
},
Expand Down
2 changes: 1 addition & 1 deletion docs/explanation/agent-internals.mdx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
type: explanation
title: Agent Internals
sidebar_position: 5
sidebar_position: 6
description: Deep dive into Fishjam agent architecture, lifecycle, and how to integrate without using a server SDK.
---

Expand Down
2 changes: 1 addition & 1 deletion docs/explanation/architecture.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ sequenceDiagram

## Next Steps

To understand different room types in detail, see [Room Types Explained](../explanation/room-types).
To understand different room types in detail, see [Rooms](../explanation/rooms).

To learn about security and token management, see [Security & Token Model](../explanation/security-tokens).

Expand Down
2 changes: 1 addition & 1 deletion docs/explanation/data-channels.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,4 @@ The typical flow is:
2. Subscribe to incoming messages
3. Publish messages to other peers

For a complete step-by-step guide on implementing text chat, see [Text Chat](../how-to/features/text-chat).
For a complete step-by-step guide on implementing text chat, see [Text Chat](../how-to/client/text-chat).
2 changes: 1 addition & 1 deletion docs/explanation/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ The ID of your Fishjam instance. It is used by your backend server to add peers

### Sandbox API

A simple testing API allowing you to test Fishjam features without requiring you to add any functionalities to your backend. As the name suggests, it's available **only** in the Sandbox environment. You can find more details [here](/how-to/features/sandbox-api-testing).
A simple testing API allowing you to test Fishjam features without requiring you to add any functionalities to your backend. As the name suggests, it's available **only** in the Sandbox environment. You can find more details [here](/how-to/backend/sandbox-api-testing).
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
type: explanation
title: Private vs Public Livestreams
sidebar_position: 6
title: Livestreams
sidebar_position: 4
description: Understand the difference between private and public livestreams in Fishjam and how to configure them.
---

import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";

# Private vs Public Livestreams
# Livestreams

:::info
This explanation only applies to Fishjam rooms with type `livestream`.
Expand Down Expand Up @@ -109,7 +109,7 @@ Note that for development purposes, you can [use the Sandbox API to generate a v

### Connecting to a private room

Once you've created a viewer token, you can connect to a room using the Fishjam client SDKs (examples below), or alternatively you can use [WHEP](../how-to/features/whip-whep#private-livestreams).
Once you've created a viewer token, you can connect to a room using the Fishjam client SDKs (examples below), or alternatively you can use [WHEP](../how-to/backend/whip-whep#private-livestreams).

<Tabs groupId="platform">
<TabItem value="react" label="React">
Expand Down Expand Up @@ -169,7 +169,7 @@ Such an application will benefit from the token-based authorization in [private

### Connecting to a public room

Once you've created a room of type `livestream` with the `public` flag enabled, you may start connecting viewers to the stream via the Fishjam client SDKs or [WHEP](../how-to/features/whip-whep#public-livestreams).
Once you've created a room of type `livestream` with the `public` flag enabled, you may start connecting viewers to the stream via the Fishjam client SDKs or [WHEP](../how-to/backend/whip-whep#public-livestreams).

<Tabs groupId="platform">
<TabItem value="react" label="React">
Expand Down
17 changes: 15 additions & 2 deletions docs/explanation/room-types.mdx → docs/explanation/rooms.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ type: explanation
sidebar_position: 3
---

# Room Types Explained
# Rooms

_Understanding different types of rooms and when to use them_

Expand Down Expand Up @@ -112,12 +112,25 @@ Livestream rooms are **20% cheaper** than conference rooms for equivalent usage.
| Sport streaming | Livestream | Highly scalable and cheaper than conference |
| Interactive workshop | Conference | Multiple video sources |

## Video Codecs

Fishjam supports the following video codecs:

- **H.264** — A hardware-accelerated codec offering superior performance. Used by default. Its availability varies by device, and it may not perform optimally at lower bitrates.
- **VP8** — A software-based codec supported across all devices, ensuring maximum compatibility. Ideal for environments lacking hardware acceleration, such as Android emulators.

Fishjam uses H.264 by default, however, to solve an issue with Android emulators, VP8 is set when you're using the Sandbox API.

You can override the default codec by setting the `codec` parameter when [creating a room](../api/server/interfaces/RoomConfig#videocodec) using server SDKs.

We recommend using H.264 for production and VP8 for development as it works with Android emulators.

## Next Steps

To understand how to use each room type:

- [How to implement livestreaming](../tutorials/livestreaming)
- [How to create audio-only calls](../how-to/features/audio-only-calls)
- [How to create audio-only calls](../how-to/backend/audio-only-calls)

To learn about the underlying architecture:

Expand Down
2 changes: 1 addition & 1 deletion docs/explanation/sandbox-api-concept.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ This shows you exactly what your production backend needs to do, just with prope

To understand how to use The Sandbox API for development:

- [How to use The Sandbox API for testing](../how-to/features/sandbox-api-testing)
- [How to use The Sandbox API for testing](../how-to/backend/sandbox-api-testing)

To learn about building your own backend:

Expand Down
2 changes: 1 addition & 1 deletion docs/explanation/security-tokens.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
type: explanation
sidebar_position: 4
sidebar_position: 5
---

# Security & Token Model
Expand Down
2 changes: 1 addition & 1 deletion docs/explanation/simulcast.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -79,5 +79,5 @@ For simple 1:1 calls where both sides always show full-screen video, simulcast a

## See also

- [Simulcast how-to guide](../how-to/features/simulcast): step-by-step implementation
- [Simulcast how-to guide](../how-to/client/simulcast): step-by-step implementation
- [Architecture](./architecture): how Fishjam routes media
2 changes: 1 addition & 1 deletion docs/explanation/what-is-fishjam.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Create voice-only experiences like audio conferencing, podcasts, or voice chat a

To understand how Fishjam works technically, see [Fishjam Architecture](../explanation/architecture).

To learn about the different types of rooms available, see [Room Types Explained](../explanation/room-types).
To learn about the different types of rooms available, see [Rooms](../explanation/rooms).

Ready to start building? Check out our tutorials:

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
type: how-to
sidebar_position: 6
description: Create audio-only rooms and livestreams for voice-only use cases at a discounted cost.
---

Expand Down Expand Up @@ -34,7 +34,7 @@ If the same room were audio-only, the final cost would only be $2.00.

## How Do I Use It?

Using this feature is as easy as setting the `roomType` field when creating a room using our [Server SDKs](../../how-to/backend/server-setup).
Using this feature is as easy as setting the `roomType` field when creating a room using our [Server SDKs](./server-setup).

:::info
Attempting to stream a video while connected to an `audio_only` or `audio_only_livestream` room will result in only the audio being sent to the other peers.
Expand Down Expand Up @@ -65,7 +65,7 @@ Set `roomType` to `audio_only` when creating a room:
</TabItem>
</Tabs>

Now, you can connect peers normally to the room as described in our [Web & Mobile connecting guide](../../how-to/client/connecting).
Now, you can connect peers normally to the room as described in our [Web & Mobile connecting guide](../client/connecting).

### Livestreaming

Expand Down
2 changes: 1 addition & 1 deletion docs/how-to/backend/fastify-example.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 0
sidebar_position: 1
title: Fastify
description: Example Fastify server integration using the Fishjam Node.js SDK.
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
type: how-to
sidebar_position: 5
description: Use the Sandbox API to create rooms and peers for testing without setting up your own backend server.
---

Expand Down Expand Up @@ -320,5 +320,5 @@ Once you've tested your integration with the Sandbox API:

For production deployment:

- [How to set up a production server](../../how-to/backend/server-setup)
- [How to set up a production server](./server-setup)
- [How to implement proper authentication](../../explanation/security-tokens)
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
type: how-to
title: Selective Subscriptions
sidebar_position: 7
description: Configure manual subscription mode so your backend controls which peers receive which streams.
---

Expand Down Expand Up @@ -332,7 +332,7 @@ As new speakers join, simply call `subscribe_peer` again to add them to the audi

## See also

- [Room types explained](../../explanation/room-types)
- [Rooms](../../explanation/rooms)
- [React quick start](../../tutorials/react-quick-start)
- [React Native quick start](../../tutorials/react-native-quick-start)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
type: how-to
title: WHIP/WHEP with Fishjam
sidebar_position: 8
description: Publish and receive Fishjam livestreams directly using the WHIP and WHEP protocols.
---

Expand Down Expand Up @@ -103,7 +103,7 @@ The usage of WHEP is very similar to WHIP, as you need the following:
With Fishjam, if the livestream is private, then the **token is required**.
On the other hand, if the livestream is public, then the **token is omitted**.

[Private vs Public Livestreams](../../explanation/public-livestreams) explains private and public livestreams in more detail.
[Livestreams](../../explanation/livestreams) explains private and public livestreams in more detail.
In this guide we demonstrate how to view each livestream type using WHEP directly.

### Private livestreams
Expand Down Expand Up @@ -219,11 +219,11 @@ http://fishjam.io/api/v1/live/api/whep/[ROOM-ID]
More on livestreaming:

- [Livestreaming tutorial](../../tutorials/livestreaming)
- [Private vs Public livestreams](../../explanation/public-livestreams)
- [Livestreams](../../explanation/livestreams)

If livestreaming doesn't fit your use case:

- [Room types explained](../../explanation/room-types)
- [Rooms](../../explanation/rooms)
- [Videoconferencing in React Native](../../tutorials/react-native-quick-start)
- [Videoconferencing in React](../../tutorials/react-quick-start)
- [Audio-only calls](../../how-to/features/audio-only-calls)
- [Audio-only calls](./audio-only-calls)
2 changes: 1 addition & 1 deletion docs/how-to/client/connecting.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ your Room).
<TabItem value="sandbox" label="Sandbox App">

Once you create your account on [Fishjam](https://fishjam.io), you will have access to the Sandbox environment as part of the Mini Jar plan.
While using the Sandbox environment, [you can use the Sandbox API](../features/sandbox-api-testing) to generate peer tokens for testing or development purposes.
While using the Sandbox environment, [you can use the Sandbox API](../backend/sandbox-api-testing) to generate peer tokens for testing or development purposes.
This is basically a service that will create a Room, add your app as
the Room's Peer, and return the token required to use that Room.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
type: how-to
title: Simulcast
sidebar_position: 15
description: Enable multi-quality video streaming and let receivers choose their preferred quality variant.
---

Expand All @@ -13,7 +13,7 @@ This guide shows how to enable simulcast (multi-quality video streaming) so that

## Prerequisites

Before configuring simulcast, you must be [connected to a room](../client/connecting) with video enabled.
Before configuring simulcast, you must be [connected to a room](./connecting) with video enabled.

:::tip
For a conceptual overview of how simulcast works, including when to use it and how variants flow through the server, see [Simulcast](../../explanation/simulcast).
Expand Down Expand Up @@ -282,4 +282,4 @@ This means `setReceivedQuality` is only available on tracks from remote peers, w
## See also

- [Simulcast explanation](../../explanation/simulcast): conceptual overview of how simulcast works
- [Connecting to a room](../client/connecting): prerequisite for using simulcast
- [Connecting to a room](./connecting): prerequisite for using simulcast
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
type: how-to
title: Text Chat
sidebar_position: 16
description: Implement peer-to-peer text chat in your application using Fishjam data channels.
---

Expand All @@ -13,7 +13,7 @@ This guide shows how to implement text chat in your application using data chann

## Prerequisites

Before implementing text chat, you must be [connected to a room](../client/connecting). Data channels only work after you have successfully joined a room.
Before implementing text chat, you must be [connected to a room](./connecting). Data channels only work after you have successfully joined a room.

:::tip
For a deeper understanding of how data channels work, including channel types and broadcast behavior, see [Data Channels](../../explanation/data-channels).
Expand Down Expand Up @@ -355,6 +355,6 @@ This ensures no chat messages are lost or arrive out of order.
## See also

- [Data Channels](../../explanation/data-channels) — detailed explanation of channel types and broadcast behavior
- [Connecting to a room](../../how-to/client/connecting) — prerequisite for using data channels
- [Connecting to a room](./connecting) — prerequisite for using data channels
- [`useDataChannel` API reference (Web)](../../api/web/functions/useDataChannel)
- [`useDataChannel` API reference (Mobile)](../../api/mobile/functions/useDataChannel)
4 changes: 0 additions & 4 deletions docs/how-to/features/_category_.json

This file was deleted.

4 changes: 0 additions & 4 deletions docs/how-to/troubleshooting/_category_.json

This file was deleted.

30 changes: 0 additions & 30 deletions docs/how-to/troubleshooting/video-codecs.mdx

This file was deleted.

11 changes: 11 additions & 0 deletions docs/integrations/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"label": "Integrations",
"position": 4,
"link": {
"type": "generated-index",
"title": "Integrations",
"description": "Guides for integrating third-party services with Fishjam.",
"slug": "/integrations"
},
"collapsible": false
}
Loading
Loading