DataStack
The Fastest way to build apps in python
Install / Use
/learn @data-stack-hub/DataStackREADME
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

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()
Related Skills
node-connect
349.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
