Hi everyone! We're excited to announce that our reactive web UI framework is now public. This project has been in the works for quite some time, and we're excited to share it with you. Feel free to check it out and share your feedback!
Rio is a brand-new GUI framework designed to let you create modern web apps with just a few lines of Python. Our goal is to simplify web and app development, allowing you to focus on what matters most instead of getting stuck on complicated user interface details.
We achieve this by adhering to the core principles of Python that we all know and love. Python is meant to be simple and concise, and Rio embodies this philosophy. There's no need to learn additional languages like HTML, CSS, or JavaScript, as all UI, logic, components, and even layout are managed entirely in Python.
Moreover, there's no separation between front-end and back-end; Rio transparently handles all communication for you.
Rio doesn't just serve HTML templates like you might be used to from frameworks like Flask. In Rio, you define components as simple data classes with a React/Flutter-style build method. Rio continuously watches your attributes for changes and updates the UI as necessary.
class MyComponent(rio.Component):
clicks: int = 0
def _on_press(self) -> None:
self.clicks += 1
def build(self) -> rio.Component:
return rio.Column(
rio.Button('Click me', on_press=self._on_press),
rio.Text(f'You clicked the button {self.clicks} time(s)'),
)
app = rio.App(build=MyComponent)
app.run_in_browser()
Notice how there is no need for any explicit HTTP requests. In fact, there isn't even a distinction between frontend and backend. Rio handles all communication transparently for you. Unlike ancient libraries like tkinter, Rio ships with over 50 built-in components in Google's Material Design. Moreover, the same exact codebase can be used for both local apps and websites.
Rio is perfect for developers who want to create web apps without spending time learning new languages. It’s also ideal for those who want to build modern, professional-looking apps without stressing over the details
We welcome your thoughts and questions in the comments! If you like the project, please give us a star on GitHub to show your support and help us continue improving it.