How to create a live streaming app with Bubble, Daily, and Mux – Part 2

Part 2 in the series on how to build a live streaming app in Bubble using the Video, Audio, and Live Bundle with Mux integration, enabling users to set up, broadcast, and view streams directly within your app.

How to create a live streaming app with Bubble, Daily, and Mux – Part 2
Do not index
Do not index
Welcome to Part 2 of building a live-streaming app with Bubble! If you haven’t completed Part 1, start there before continuing.
This section covers designing the app’s header, creating sign-up and login workflows, and setting up the basic stream creation form. If you’re mainly interested in the plugin-related steps, jump to the sections on creating the stream form and stream workflow.
While the guide walks you through each step, you can also explore a finished version in the sample editor. Please note that, for security, sign-ups are disabled and API keys have been removed.

1. Create the app header

First, create a simple home page where users can sign up and log in. You’ll use the default index page and Bubble’s built-in components.
 
Go to the Design tab for the index page. Click on the page and set the layout to Column.
notion image
 
 
Under Components, install any plugins needed for this setup.
notion image
 
 
 
Drag a Header component onto the page.
notion image
 
Rename it to YouStreamly, and remove other header elements as needed.
notion image
 
Since this header will appear across multiple pages in your app, converting it to a reusable element will save time and ensure consistency. Right-click on the header, select Convert to a reusable element, and name it header. Now, you can easily add this header to any page without rebuilding it each time
 
notion image
 
Set the default width for the reusable header to 1200 in Layout.
notion image
 
 
Create a conditional for the Sign Up button to change to Log Out when a user is logged in.
notion image
 
In the appearance tab select Edit workflow.
notion image
 
Create a workflow that redirects the user to home when a user is logged out
notion image
 
Duplicate the workflow and log the user out if the user is logged in
notion image
 
Add a final workflow to go home when Group logo is clicked
notion image
 
Back in the index page remove the Group header and replace it with the reusable element header.
notion image

2. Design the home page

Now, set up the home page for users to create accounts, log in, and create streams.
 

Sign up form

Drag the sign-up component onto the page.
notion image
 
Customize the sign up page as follows:
 
  • Title: Start streaming with YouStreamly
  • Description: Create an account and start live streaming to YouTube. Perfect for creators who want a lightweight way to share live sessions, Q&As, and interviews with viewers.
notion image
 
In the layout tab select collapse when hidden
notion image
 
In the Conditional tab, make the sign-up form hidden when a user is logged in.
notion image
 
 

Log in Form

Add a Log In component below the sign-up form and customize as follows:
  • Title: Start streaming with YouStreamly
  • Description: Log into your account to start live streaming to YouTube.
 
notion image
 
In the Layout tab for Group log in check collapse when hidden and uncheck this element is visible on page load.
 
notion image
 
In the conditional tab add a condition that when the current user is logged in the element isn’t visible
notion image
 

Stream creation form

To add a form for stream details, duplicate the Sign-Up form and make the following adjustments:
  1. Rename the duplicated group to Group Stream.
  1. Update the title to Create Stream and add a subtitle: Enter your stream details
  1. Modify the input fields as follows:
      • Change the Email input to Stream Name. Set the placeholder to Stream Name and format to text.
      • Duplicate the Name input and replace it with a multiline input
      notion image
      • Rename the input to Input Description and update the placeholder text to Stream Description.
      • Adjust the height to 90px in the Layout tab.
      notion image
  1. Update the button text to Create and remove any “Already have an account?” text.
In the Layout tab for Group Create Stream, uncheck This element is visible on page load to ensure it is hidden by default.
notion image
 
 
In the Conditional tab, set the form to become visible when the current user is logged in
 
notion image
 

3. Workflows for signing up, logging in and creating the stream

Sign up Workflow

Select the Sign Up button, go to Edit Workflow, and create a workflow to register a user when clicked.
 
notion image
 
Replace the “Already have an account?” link with text
notion image
 
Add a workflow to hide the sign-up group and display the login group when this text is clicked
notion image
 
 

Log in

Select the Log In button, edit the workflow to log in a user, and add a step to reset relevant inputs
 
notion image
 
 
For Forgot Password?, set up a workflow to send a password reset email when clicked.
notion image
 
 
Round out the workflow by adding an action to Reset relevant input to ensure clean data entry.
notion image
 
 

Create stream workflow

This is where the Video, audio & live bundle comes into play!
 
Select the Create Stream button and create a workflow to set up a streaming session by using Bundle Daily - Create a Room with default settings, followed by Bundle Daily - Create a Meeting Token with the Owner Token set to "Yes" to enable room owners to stream.
 
notion image
 
Add Bundle Mux - create live stream this is going to give us our stream URLs so we can playback the live stream directly into our app.
notion image
 
Save the stream information to your database:
  • Name = Input stream name’s value
  • Owner Token = Result of Step 2 (Bundle Daily - Create Meeting Token)’s token
  • Room ID = Result of Step 1 (Bundle Daily - Create Room)’s ID
  • Room Name = Result of Step 1 (Bundle Daily - Create Room)’s name
  • Room URL = Result of Step 1 (Bundle Daily - Create Room)’s URL
  • Stream URL = https://stream.mux.com/Result of Step 3 (Bundle Mux - Create Stream)’s playback_ids:first item.m3u8
  • Stream Key = Result of Step 3 (Bundle Mux - Create Stream)’s stream key
  • User = Current User
  • Description = Input description’s value
 
notion image
 
Add an action to navigate users to a backstage page where they can join and view the stream. Create a new page called backstage, leaving the clone form field blank.
notion image
 
 
Send the stream data to the backstage page and set the content type to stream.
notion image
 
 
 

Wrap-Up

Nice job! 🎉 You’ve created the home page and stream workflows to bring your app to life. Now let’s move to Part 3: Building the Backstage to create a seamless experience for going live.
 

We build third-party apps and integrations

Partner with us →

Written by

Lola
Lola

Lola is the founder of Lunch Pail Labs. She enjoys discussing product, SaaS integrations, and running a business. Feel free to connect with her on Twitter or LinkedIn.