Skip to content

data-stack-hub/DataStack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Welcome to DataStack

The Fastest way to build apps in python

Datastack is an open-source framework that enables you to easily build real-time web apps, internal tools, dashboards, weekend projects, data entry forms, or prototypes using just Python—no frontend experience required.

Installation

pip install pydatastack

Build from Source

pip install git+https://github.com/data-stack-hub/DataStack.git#subdirectory=lib

or

git clone https://github.com/data-stack-hub/DataStack.git
cd DataStack\lib
pip install .

Quickstart

Create new file counter.py with following code:

from datastack import datastack
ds = datastack(main=True)

ds.subheader('DataStack click counter app')

count = 0

def inc_count():
    global count
    count += 1

ds.button('Click', on_click=inc_count)
ds.write('counts: ' + str(count))

Now run it to open the app!

$ datastack run counter.py

Open app in browser localhost:5000

Alt text

Documentation

Visit the DataStack documentation site for more examples.

The documentation has been built using DataStack itself. If you have any questions or need assistance, feel free to raise an issue.

DataStack Widgets

# write text
ds.write('some text')
#  dropdown selection
ds.subheader('Dropdown Selection')
selected_value = ds.select(['a','b','c'])
ds.write('selected value: ' + selected_value)
# list
ds.subheader('List')
selection_from_list = ds.list(['a','b','c'])
ds.write('Selected Option: ' + selection_from_list)
# Button
def inc_count(a):
    global count
    count +=1
ds.subheader('Button click')
count = 0
ds.button('Click', on_click=inc_count)
ds.write('Count value: '+ str(count))
# input
ds.subheader('Input value')
input_value = ds.input(input_value)
ds.write('Input: '+ input_value)
#  HTML
ds.subheader("HTML")
ds.html("<div style='color:green'>HTML Text</div>")
# Iframe
ds.subheader('Iframe')
def change_iframe(a):
    global url
    if a['payload'] == 'Wikipedia':
        url = 'https://www.wikipedia.org/'
    elif a['payload'] == 'ML':
        url = 'https://en.wikipedia.org/wiki/ML'
    else:
        url = 'https://www.wikipedia.org/'

ds.list(['Wikipedia','ML'], on_click=change_iframe)
url = 'https://www.wikipedia.org/'
ds.iframe(url)
# page divider
ds.divider()
# dataframe
df = pd.DataFrame(
    [["a", "b"], ["c", "d"]],
    index=["row 1", "row 2"],
    columns=["col 1", "col 2"])
ds.write('dataframe')
ds.dataframe(df)
# table
ds.write('table')
ds.table(df)
# data input
date = ds.date_input()