Vuepy
Vue.py is a progressive, incrementally-adoptable Python framework for building web interface in Jupyter Notebook. ✨
Install / Use
/learn @vuepy/VuepyREADME
About
Vue.py (pronounced /vjuːpaɪ/, like "view py") is a reactive Python framework for building web interface in Jupyter. It is built upon standard HTML, CSS, and Python, offering a declarative and component-based programming model that aids in the efficient development of user interfaces. Vue.py is capable of handling both simple and complex interfaces.
- 🛠️ create custom web interface using pure Python in Jupyter
- 🤖 prototype within .ipynb or .py files
- 🪄 reactive: update the data, vuepy will reactively update all dependent view components
- 🚀 batteries-included: built-in IPywUI includes 37+ commonly used UI components
- 🚀 batteries-included: Panel-vuepy includes 130+ commonly used UI components
- 🧩 extensible: can easily integrate third-party python libraries such as plotly, bokeh, panel, pandas, ipyleaflet etc
- 🖐️ interactive: bind sliders, buttons, plots, and more to Python — no callbacks required
- 🚀 run in Jupyter, JupyterLab, VSCode, Cursor, Google Colab and more
- ✨ generate UI interface with one click through AI-driven conversation interface. provide llms.txt, llms-ctx.txt, llms-ctx-ipywui.md, llm-ctx-panel-vuepy.md
Installation
Vue.py is available on PyPI:
pip install vuepy-core
Usage
from vuepy import ref, create_app
def setup(*args):
count = ref(0)
def counter():
count.value += 1
return locals()
app = create_app({
'setup': setup,
'template': '''
<Button :label="f'Count is: {count.value}'"
@click='counter()'
></Button>
'''
})
app.mount()

Read the documentation to learn more.
Learn more
vuepy is easy to get started with, with lots of room for powers users.
Check out our docs, the examples/ folder, and our gallery to learn more.
Support
Having trouble? Get help in our Discord or open a Discussion.
Contributing
New contributors welcome!
<!--Check out our [Contributors Guide](./CONTRIBUTING.md) for help getting started. Join us on [Discord](https://discord.gg/) to meet other maintainers. We'll help you get your first contribution in no time! --> <!-- ## Citation If you use **vuepy** in your work, please consider citing the following publications: Our [JOSS paper](https://joss.theoj.org/papers/10.21105/joss.06939) describing the overall project and vision: ```bibtex @article{manz2024anywidget, title = {anywidget: reusable widgets for interactive analysis and visualization in computational notebooks}, volume = {9}, url = {https://doi.org/10.21105/joss.06939}, doi = {10.21105/joss.06939}, number = {102}, journal = {Journal of Open Source Software}, author = {Manz, Trevor and Abdennur, Nezar and Gehlenborg, Nils}, year = {2024}, note = {Publisher: The Open Journal}, pages = {6939}, } ``` Our [SciPy paper](https://proceedings.scipy.org/articles/NRPV2311), detailing the motivation and approach behind Jupyter Widget ecosystem compatability: ```bibtex @inproceedings{manz2024notebooks, title = {Any notebook served: authoring and sharing reusable interactive widgets}, copyright = {https://creativecommons.org/licenses/by/4.0/}, url = {https://doi.curvenote.com/10.25080/NRPV2311}, doi = {10.25080/NRPV2311}, urldate = {2024-10-07}, booktitle = {Proceedings of the 23rd {Python} in {Science} {Conference}}, author = {Manz, Trevor and Gehlenborg, Nils and Abdennur, Nezar}, month = jul, year = {2024}, } ``` -->