DashExpress - A tool for faster application development!

Hey! :wave:

My name is Kirill & I’m quite excited to share my first open source project with all of you: DashExpress!

pip install dash-express

Its a library of tool for faster application development Plotly Dash. Dash Express, extends the Plotly Dash, by adding responsive UI and generated automatic callback-functions. The logic of creating a Dash Express application, like any dashboard, comes down to 4 stages:

  1. Data collection
  2. Creating a layout
  3. Filling layouts with visualizations
  4. Adding filtering

Dash Express simplifies the second and fourth stages. The concept of Dash Express implies the rejection of the need to write callback functions. Despite the fact that writing such functions as a rule does not present any difficulty, it can be very tedious in the case of a large number of visualizations and (or) frequent changes in layout and content.

Basic features¶:

  1. Pre-configured UI
  2. Automatic callback functions
  3. Autofilters
  4. An alternative implementation of multipage, with support for access depending on the user

Below is an example of a minimal full-featured application

min_app

import pandas as pd
import plotly.graph_objects as go
import dash_mantine_components as dmc

from dash_express import DashExpress, Page


# Incorporate data
get_df = lambda: pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv')

# Initialize the app
app = DashExpress(logo='DashExpress')

# Initialize the Page
page = Page(
    app=app,                    # DashExpress app
    url_path='/',               # page url
    name='Owerview',            # page name in navigation buttons
    get_df=get_df,              # function for getting pd.DataFrame
    title='Owerview',           # page title
    )

# The logic of drawing a graph
def bar_func(df):
    pv = pd.pivot_table(df, index='continent', values='lifeExp').reset_index()
    fig = go.Figure([go.Bar(x=pv['continent'], y=pv['lifeExp'])])
    return fig

# Dashboard layout
page.layout = dmc.SimpleGrid(
    page.add_graph(h='calc(100vh - 138px)',render_func=bar_func)
    )

# By which columns to filter
page.add_autofilter('continent', multi=True)
page.add_autofilter('country', multi=True)
page.add_autofilter('lifeExp', multi=True)

app.run(debug=True)

Please read the docs website to understand how it works


English is not my native language, if I made a mistake in this message or on the documentation site, do not be afraid to correct me

6 Likes

Very good idea, @stpnvKirill . I can see how this can make it easier to build Dash apps. Thank you for creating this library and sharing with us. What do you use DashExpress for: hobby, work purposes, etc.?

The library was born while working on my startup in the field of real estate market analysis. I needed to quickly create a large number of pages with dashboards, while adjusting access to the dashboard based on the client’s subscription level.

During the development process, I realized that this can be a valuable solution in many situations and for many developers. So I decided to share the library with everyone.


Now the documentation does not describe the ability to regulate access, I will do it a little later.

I tried to make DashExpress flexible, so I made it possible to customize the interface. The BaseAppShell class is responsible for this. I will also tell you about him a little later.

3 Likes