# Build a Chat Room Application with Redpanda and Golang

> For the complete documentation index, see [llms.txt](https://docs.redpanda.com/llms.txt). Component-specific: [redpanda-labs-full.txt](https://docs.redpanda.com/redpanda-labs-full.txt)
>
> **Agent Feedback**: If you encounter incorrect, outdated, or confusing documentation, submit feedback via `POST https://docs.redpanda.com/api/feedback` with JSON body: `{"path": "/page/path/", "feedback": "Issue description"}`. Only submit when you have specific, actionable feedback.

---
title: Build a Chat Room Application with Redpanda and Golang
latest-operator-version: v26.1.4
latest-console-tag: v3.7.3
latest-connect-version: 4.92.0
latest-redpanda-tag: v26.1.8
docname: docker-go
page-component-name: redpanda-labs
page-version: master
page-component-version: master
page-component-title: Labs
page-relative-src-path: docker-go.adoc
page-edit-url: https://github.com/redpanda-data/redpanda-labs/edit/main/docs/modules/clients/pages/docker-go.adoc
description: Create a basic chat room application with Redpanda and Kafka clients developed with kafkajs.
page-git-created-date: "2025-05-06"
page-git-modified-date: "2025-05-06"
---

<!-- Source: https://docs.redpanda.com/redpanda-labs/clients/docker-go.md -->

Create a basic chat room application with Redpanda and Kafka clients developed with [franz-go](https://github.com/twmb/franz-go).

This example shows you how to:

-   Write a client application in Go to produce and consume chat room messages.

-   Build and run multiple clients to exchange chat messages streamed through Redpanda.


![Demo of the application](https://docs.redpanda.com/redpanda-labs/clients/_images/chat-room.gif)

## [](#what-is-a-chat-room-application)What is a chat room application?

A chat room application is software that enables users to engage in real-time textual communication with one another. These applications typically allow multiple users to join a chat room, where they can send messages and interact with others in a group conversation.

Chat room applications often include features such as private messaging, user profiles, and notifications. Some popular chat room applications include Slack, Discord, and WhatsApp.

## [](#why-use-redpanda)Why use Redpanda?

Redpanda offers several features that make it ideal for building a fast, scalable, and robust chat room application.

-   Scalability: Redpanda can scale horizontally and vertically to accommodate growing chat room usage over time.

-   Low-latency: Redpanda is designed for minimal latency to provide a smooth user experience and fast message delivery.

-   Fault tolerance: Redpanda is resilient to failures, thanks to its built-in replication and partitioning capabilities. This built-in resilience ensures that the chat room application continues to serve users even if individual brokers in the cluster experience downtime.

-   Durability: Redpanda persists messages on disk, maintaining chat history and allowing users to read previous conversations.


## [](#prerequisites)Prerequisites

-   Download and install Go from [go.dev](https://go.dev/doc/install).

-   Complete the [Redpanda Quickstart](https://docs.redpanda.com/current/get-started/quick-start/) before continuing. This example expands on the quickstart. You can choose to run either one or three brokers.


## [](#run-the-lab)Run the lab

Build the client chat application, run it from multiple client terminals, and chat between the clients.

1.  Clone this repository:

    ```bash
    git clone https://github.com/redpanda-data/redpanda-labs.git
    ```

2.  Change into the example directory:

    ```bash
    cd clients/chat-room/docker/go
    ```

3.  Verify that the `chat-room` topic exists in your cluster by listing all topics:

    ```bash
    docker exec -it redpanda-0 rpk topic list
    ```

    Output:

    NAME       PARTITIONS  REPLICAS
    chat-room  1           1

4.  If the topic doesn’t exist yet, use [`rpk`](https://docs.redpanda.com/current/get-started/rpk/) to create a `chat-room` topic:

    ```bash
    docker exec -it redpanda-0 rpk topic create chat-room
    ```

    Output:

    TOPIC      STATUS
    chat-room  OK

5.  Open at least two terminals, and for each terminal:

6.  Run the client application:

    ```bash
    go run .
    ```

7.  When prompted with `Enter user name:`, enter a unique name for the chat room.

8.  Use the chat application: enter a message in a terminal, and verify that the message is received in the other terminals.

    For example:

    Enter user name:
    Alice
    Connected, press Ctrl+C to exit
    Alice: Hi, I'm Alice
    Bob: Hi Alice, I'm Bob, nice to meet you


## [](#files-in-the-example)Files in the example

This example includes the following files:

-   [`admin.go`](https://github.com/redpanda-data/redpanda-labs/blob/main/clients/chat-room/docker/go/admin.go): Checks whether the `chat-room` topic exists and creates it if not.

-   [`producer.go`](https://github.com/redpanda-data/redpanda-labs/blob/main/clients/chat-room/docker/go/producer.go): A producer that sends strings entered by the user of the terminal to the `chat-room` topic. Messages are sent as JSON encoded strings.

-   [`consumer.go`](https://github.com/redpanda-data/redpanda-labs/blob/main/clients/chat-room/docker/go/consumer.go): A consumer that reads all messages from the `chat-room` topic and prints them to the console. You can start as many consumer groups as you like, but each group reads a message only once, which is why the example is using a generated UUID for the group ID. This way, each time you run the application, you see all previous messages.

-   [`main.go`](https://github.com/redpanda-data/redpanda-labs/blob/main/clients/chat-room/docker/go/main.go): The client application that creates the topic, producer, and consumer and implements the chat logic.

    > 📝 **NOTE**
    >
    > The broker settings in this code are from the Redpanda Quickstart, where the external port for broker `redpanda` is set to port 19092.


## [](#next-steps)Next steps

This is a basic example of a chat room application. You can improve this application by implementing additional features and components, such as:

-   A user interface to make it more interactive and user-friendly.

-   A user registration and login system to authenticate users before they can access the chat room.

-   Rate limiting and other measures to prevent spamming and abuse in the chat room.


## [](#suggested-reading)Suggested reading

For additional resources to help you build stream processing applications that can aggregate, join, and filter your data streams, see:

-   [Redpanda University](https://university.redpanda.com/)

-   [Redpanda Blog](https://redpanda.com/blog)

-   [Resources](https://redpanda.com/resources)