Is there a way to run a finnished Dash app in two different dash tabs?

wrote a Dash App, where users can upload a CSV file and display it as a graph. It also contains certain callbacks that change the color of the bar in the graph while clicking on the graph and the selected row in the table gets marketed. My question is now how can I run my app in two different Dash tabs, for instance, you can use two uploaded CSV files and compare them for a better overview.

I already tried to separate my app in a project structure like below.

  • apps

but is this really needed? Do I need to connect the callbacks in the and especially which of them to run my app again?

import base64
import dash_core_components as dcc
import dash_html_components as html
import dash_table_experiments as dt
from dash.dependencies import Input, Output, State
import dash
import pandas as pd
import io

app = dash.Dash()

app.scripts.config.serve_locally = True
app.config[‘suppress_callback_exceptions’] = True
image_filename = —
encoded_image = base64.b64encode(open(image_filename, ‘rb’).read())

app.layout = html.Div([
‘Drag and drop’,
html.A(‘Select Files’)
‘width’: ‘100%’,
‘height’: ‘60px’,
‘lineHeight’: ‘60px’,
‘borderWidth’: ‘1px’,
‘borderStyle’: ‘dashed’,
‘borderRadius’: ‘5px’,
‘textAlign’: ‘center’,
‘margin’: ‘10px’


html.Div("x axis"),
    multi = False,

html.Div('y axis'),
    multi = True,

html.H5("Updated Table"),
html.Div(dt.DataTable(rows=[{}], id='table', 
                      selected_row_indices=[], row_selectable=True))



file upload function

def parse_contents():

#return graph function
return graph():


def update_selected_row_indices():

#update graph
def update_graph():

callback table creation

def update_output():

#callback x dropdown
def updateX():

#callback y dropdown
def updateY():