Resenha - Add Discord-style Voice Rooms to Your Community 🎙

Hey everyone! Sharing Resenha, an experimental plugin that adds voice chat rooms directly into Discourse — no external apps, no media servers, just peer-to-peer voice in your sidebar.

output

Try It Live

:point_right: https://discourse-on-a-pi5.falco.dev/

(Yes, it runs on a Raspberry Pi 5 — that’s how lightweight this is.)

How It Works

Click a room in the sidebar to join, click again to leave. All audio goes peer-to-peer via WebRTC — your Discourse server only handles signaling, never media. A default “Watercooler” room is created on install so your community can start talking immediately.

Features

  • Sidebar-first UX — rooms and live participant avatars right in the sidebar, Discord-style
  • Speaking indicators — animated audio bars show who’s talking in real time
  • Participant controls — context menu with volume, mute, and kick options
  • Room management — staff CRUD UI plus a full REST API for programmatic control
  • Zero infrastructure — pure browser WebRTC with DTLS-SRTP encryption, no SFU/MCU needed
  • Trust level gating — uses Discourse’s existing trust system for room creation permissions

Status

:warning: Alpha — works well for small rooms (2–10 participants). Test with a small group first. Larger rooms may hit browser peer limits; SFU support is planned.

Installation

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/xfalcox/resenha.git

Enable in Admin > Settings > Plugins > resenha enabled.

Feedback Welcome

This is experimental — bugs, ideas, and questions are all welcome in this topic. PRs too!


Note: This is not an official plugin.

45 Likes

Review, awesome I love it thank you my fellow countryman

8 Likes

I just installed it and up and running in about half an hour. Seems to work well! Would love to see a few feature changes/additions:

Feature Status
Rename a room :cross_mark: Not implemented
Delete a room :cross_mark: Not implemented
Change the default room name :cross_mark: Hard-coded
Tie rooms to Discourse categories :cross_mark: Not supported
Set per-room permissions :cross_mark: Not supported
Create auto-expiring rooms :cross_mark: Not supported
Room descriptions / topics :cross_mark: Not supported
10 Likes

This is amazing. Is there any plan for the team to make it official once it’s out of alpha?

7 Likes

No plans currently, as this is mostly an exploration of the possibilities of the technology and how it can integrate with Discourse.

Still, like everything else, it depends on what our customers want.

8 Likes

This is quite awesome Falco ! I can see quite a few applications for this being what you have listed. Feature plugins like this definitely helps make Discourse Meta the goto platform!

4 Likes

Where is the option to create a new room?

There is no UI for that as this is an experimental project on the technology rather than a ready solution for productions sites.

2 Likes

Shouldn’t,t the experimental be present for now?

Cool plugin

3 Likes

I’ve been having a play with this for a few days - and it is brilliant!!!

It solves the problem of easy ‘upgrading’ a forum/chat discussion into a verbal conversation beautifully. I’ve had years of struggling between the need to switch to other platforms, or having resource-heavy (attempts at) integrated video conferencing.

If you decide to take it further, I’d love it to be designed to integrate with chat. It would be simply sublime to be able to launch a private Voice room for the members of a chat directly from the chat (with a tidy up afterwards to keep things clean). And the chat would remain as the perfect place to drop in additional comments, files, links, etc.

Icing on the cake would of course be:

  1. An option for video (likely not possible technically with such a lightweight tech)

  2. AI transcription, clever enough to integrate related topics and chat. This would be absolutely amazing as a meeting scribe.

10 Likes

Thanks for the feedback! That was exactly my goal with this!

Definitely, that would be a logical next step, with ephemeral rooms to back it up.

It’s very doable, both without a SFU/MCU for people with good enough upload, or with optional support for it.

7 Likes

This were perfect I not will update for a long period but feb I’ll update for last time when ESR is launched for include this plugin

I am so excited for that and I hope to comes.

2 Likes

Want to use a more water-cooler like icon?

image

Pop this in a TC:

// Put this in the JS tab or in /javascripts/discourse/api-initializers/...
import { apiInitializer } from "discourse/lib/api";

export default apiInitializer(api => {
  api.replaceIcon("microphone-lines", "bottle-water");
});
/* Flip the bottle-water icon upside down in Resenha sidebar - put in Common*/
.sidebar-section.sidebar-section-wrapper [class*="d-icon-microphone-lines"] {
  transform: rotate(180deg);
  /* Optionally, tweak vertical alignment if needed */
  display: inline-block;
}
2 Likes

There is now UI for managing rooms.

8 Likes

Thanks Falco for this plugin :heart:

This is great work :+1:

1 Like

I’m testing in production I’ll be back with feedbacks! Let’s Review :brazil:

1 Like

Maybe a ring could be better in this case? when I among a room and click on my own profile or another profile DOM refresh returning to homepage.

There is now a room details screen using the kebab menu pattern from Discourse Chat

It doesn’t overlap on the default theme, maybe adjust yours theme to handle the less pace for padding?

image

This is now fixed.

1 Like