Web apps in pure Python.
Project description
[!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:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reflex-0.9.3a1.tar.gz.
File metadata
- Download URL: reflex-0.9.3a1.tar.gz
- Upload date:
- Size: 391.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3337928d41c3b2a1600810fb16b7cfd22e1777f46dd14ad8e198ad005a4ca488
|
|
| MD5 |
eb5441d028f1a273b5c5fe43e8529515
|
|
| BLAKE2b-256 |
3e468d7b1390ad9b8e2a5f17ccde5aba0f548735ddf75c4da53d794bdfbbce7c
|
File details
Details for the file reflex-0.9.3a1-py3-none-any.whl.
File metadata
- Download URL: reflex-0.9.3a1-py3-none-any.whl
- Upload date:
- Size: 646.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb0a810921b570b5922ad19b031aaf2ff29da2293045a7035e273ca35a7d0112
|
|
| MD5 |
b1b44761251aa39abf8873b543131c24
|
|
| BLAKE2b-256 |
127e82d7023c8682d0492993edc3bddeecb664ba5fe4e480e724eb9ff9aef50d
|