Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
reflex-dev/reflex: πŸ•ΈοΈ Web apps in pure Python 🐍

reflex-dev/reflex: πŸ•ΈοΈ Web apps in pure Python 🐍

13 hours ago

Reflex Logo


✨ Performant, customizable web apps in pure Python. Deploy in seconds. ✨

PyPI version</a> !versions Documentation</a> PyPI Downloads</a> Discord</a> Twitter</a>


[!NOTE]
Build faster with Reflex:
> - AI Builder - Generate full-stack Reflex apps in seconds.
- Agent Toolkit - Connect MCP and Skills to your coding assistant.
- App Management - Deploy and manage your Reflex apps.

Introduction

Reflex is a library to build full-stack web apps in pure Python.

Key features:

  • Pure Python - Write your app's frontend and backend all in Python, no need to learn Javascript.
  • Full Flexibility - Reflex is easy to get started with, but can also scale to complex apps.
See our architecture page to learn how Reflex works under the hood.

βš™οΈ Installation

Important: We strongly recommend using a virtual environment to ensure the reflex command is available in your PATH.

πŸ₯³ Create your first app

Create a project, add Reflex, and start the development server with uv:

mkdir my_app_name
cd my_app_name
uv init

uv add reflex uv run reflex init uv run reflex run

You should see your app running at http://localhost:3000.

Now you can modify the source code in my_app_name/my_app_name.py. Reflex has fast refreshes so you can see your changes instantly when you save your code.

🫧 Example App

Build an image generation app in Python with Reflex: define the UI, manage state in a class, and call an image model from an event handler.

import reflex as rx
import openai

client = openai.AsyncOpenAI()

class State(rx.State): prompt: str = "" image_url: str = "" processing: bool = False

@rx.event def set_prompt(self, value: str): self.prompt = value

@rx.event async def generate(self): self.processing = True yield response = await client.images.generate( model="gpt-image-1.5", prompt=self.prompt, ) self.image_url = f"data:image/png;base64,{response.data[0].b64_json}" self.processing = False

def index(): return rx.vstack( rx.heading("Image Generator"), rx.input(placeholder="Enter a prompt...", on_change=State.set_prompt), rx.button("Generate", on_click=State.generate, loading=State.processing), rx.image(src=State.image_url), )

app = rx.App() app.add_page(index, title="Reflex:Image Generation")

All Thanks To Our Contributors:

Chat with me