Close Menu
    Main Menu
    • Home
    • News
    • Tech
    • Robotics
    • ML & Research
    • AI
    • Digital Transformation
    • AI Ethics & Regulation
    • Thought Leadership in AI

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Prison IP to Showcase ASM and CTI Improvements at GovWare 2025 in Singapore

    October 14, 2025

    OpenAI and Broadcom Announce Strategic Collaboration to Deploy 10 Gigawatts of Customized AI Accelerators by 2029

    October 14, 2025

    Futures of Work ~ Constructing Higher Techniques for Survivors of Exploitation

    October 14, 2025
    Facebook X (Twitter) Instagram
    UK Tech InsiderUK Tech Insider
    Facebook X (Twitter) Instagram
    UK Tech InsiderUK Tech Insider
    Home»Machine Learning & Research»Constructing Pure Python Net Apps with Reflex
    Machine Learning & Research

    Constructing Pure Python Net Apps with Reflex

    Oliver ChambersBy Oliver ChambersOctober 14, 2025No Comments8 Mins Read
    Facebook Twitter Pinterest Telegram LinkedIn Tumblr Email Reddit
    Constructing Pure Python Net Apps with Reflex
    Share
    Facebook Twitter LinkedIn Pinterest Email Copy Link


    Constructing Pure Python Net Apps with ReflexPicture by Creator

     

    Once we speak about Python, we regularly consider using it to carry out information evaluation or construct a machine studying mannequin. It’s much less frequent to debate creating full net functions with Python exterior of easy prototypes utilizing libraries similar to Streamlit or Taipy.

    Nonetheless, a library referred to as Reflex presents net software improvement options that compete with these of different programming languages. Fully in Python, this open-source library helps customers construct something from small information science apps to massive, multi-page web sites. With robust flexibility but intuitive Python code, we will simply scale net improvement to swimsuit our wants with Reflex.

    On this article, we are going to be taught the fundamentals of constructing a pure Python net software with Reflex.

     

    Constructing Net Apps with Reflex

     
    On this tutorial, we are going to evaluation the requirements for constructing an internet software with Reflex. For finest practices, it’s advisable to make use of a digital atmosphere to keep away from disrupting the general atmosphere.

    With this in thoughts, we are going to start growing our Reflex net software by putting in the Reflex library utilizing the code under:

     

    We’ll then take a look at Reflex by creating a brand new undertaking and initiating a brand new software. Use the next code, however change the test_app folder identify to your personal.

    mkdir test_app
    cd test_app
    reflex init

     

    The code above prompts you with questions on whether or not you wish to create the undertaking with a pre-made template or not.

     
    Building Pure Python Web Apps with ReflexBuilding Pure Python Web Apps with Reflex
     

    For this tutorial, choose the clean Reflex app, and you will notice the brand new undertaking construction created, just like the one under.

     
    Building Pure Python Web Apps with ReflexBuilding Pure Python Web Apps with Reflex
     

    Run the next command to see in case your Reflex software runs correctly:

     

    Go to the native URL serving the appliance. If it really works nicely, you will notice one thing just like the picture under:

     
    Building Pure Python Web Apps with ReflexBuilding Pure Python Web Apps with Reflex
     

    That is the essential net software scaffold generated by Reflex. We’ll construct one thing extra refined later, however we’ll begin with the basics.

    Let’s begin by understanding the elements used to construct the net software within the Reflex library. First, open

    test_app.py and change its contents with the next code:

    import reflex as rx
    
    class State(rx.State):
        rely: int = 0
    
        def increment(self):
            self.rely += 1
    
        def decrement(self):
            self.rely -= 1
    
    def index():
        return rx.hstack(
            rx.button(
                "Decrement",
                color_scheme="ruby",
                on_click=State.decrement,
            ),
            rx.heading(State.rely, font_size="2em"),
            rx.button(
                "Increment",
                color_scheme="grass",
                on_click=State.increment,
            ),
            spacing="4",
        )
    
    app = rx.App()
    app.add_page(index)

     

    It will present a web site just like the one under.

     
    Building Pure Python Web Apps with ReflexBuilding Pure Python Web Apps with Reflex
     

    Let’s break down what’s occurring within the code above.

    First, we outline the state, which accommodates variables (referred to as vars) and capabilities (referred to as occasion handlers) that may change the state of the appliance.

    For instance, we outline a single variable referred to as rely that holds an integer with an preliminary worth of 0.

    class State(rx.State):
        rely: int = 0

     

    Then we’ve got occasion handlers—capabilities throughout the state that modify variables in response to consumer actions. Within the code above, we outline the occasion handlers as follows:

    def increment(self):
        self.rely += 1
    
    def decrement(self):
        self.rely -= 1

     
    Subsequent, we outline the net software UI as follows:

    def index():
        return rx.hstack(
            rx.button(
                "Decrement",
                color_scheme="ruby",
                on_click=State.decrement,
            ),
            rx.heading(State.rely, font_size="2em"),
            rx.button(
                "Increment",
                color_scheme="grass",
                on_click=State.increment,
            ),
            spacing="4",
        )

     

    The capabilities above outline the net software interface and use the next elements to construct the UI:

    • rx.hstack: used to stack components horizontally
    • rx.button: used to indicate a button that triggers an occasion when clicked
    • rx.heading: used to indicate textual content in varied sizes

    As you possibly can see within the code above, the heading part references the rely variable within the state, and every button triggers a operate within the state when clicked.

    There are various extra elements you need to use to construct the net software; see the Reflex elements documentation.

    Lastly, we outline the appliance and add the elements to the bottom route with the next code:

    app = rx.App()
    app.add_page(index)

     

    That could be a easy rationalization of the essential elements that Reflex makes use of to construct an internet software.

    With the reason above carried out, let’s construct a barely extra superior net software with Reflex. Within the instance under, we are going to develop a to-do record software that we will fill and take away gadgets from.

    import uuid
    import reflex as rx
    from typing import Any, Dict, Checklist
    
    class TodoState(rx.State):
        todos: Checklist[Dict[str, Any]] = []
        new_text: str = ""
        current_filter: str = "all"   # Choose between "all", "energetic", "carried out"
    
        # Derived values (computed from state)
        @rx.var
        def items_left(self) -> int:
            return sum(1 for t in self.todos if not t["done"])
    
        @rx.var
        def items_left_label(self) -> str:
            return "1 merchandise left" if self.items_left == 1 else f"{self.items_left} gadgets left"
    
        @rx.var
        def filtered_todos(self) -> Checklist[Dict[str, Any]]:
            if self.current_filter == "energetic":
                return [t for t in self.todos if not t["done"]]
            if self.current_filter == "carried out":
                return [t for t in self.todos if t["done"]]
            return self.todos
    
        # Occasions (mutate state)
        @rx.occasion
        def set_new_text(self, worth: str):
            self.new_text = (worth or "").strip()
    
        @rx.occasion
        def add_todo(self):
            textual content = (self.new_text or "").strip()
            if not textual content:
                return
            self.todos.append({"id": str(uuid.uuid4()), "textual content": textual content, "carried out": False})
            self.new_text = ""
    
        @rx.occasion
        def toggle(self, todo_id: str):
            for t in self.todos:
                if t["id"] == todo_id:
                    t["done"] = not t["done"]
                    break
    
        @rx.occasion
        def take away(self, todo_id: str):
            self.todos = [t for t in self.todos if t["id"] != todo_id]
    
        @rx.occasion
        def clear_completed(self):
            self.todos = [t for t in self.todos if not t["done"]]
    
        @rx.occasion
        def set_filter(self, identify: str):
            if identify in {"all", "energetic", "carried out"}:
                self.current_filter = identify
    
    def filter_button(identify: str, label: str) -> rx.Part:
        return rx.button(
            label,
            measurement="2",
            variant=rx.cond(TodoState.current_filter == identify, "strong", "gentle"),
            background_color=rx.cond(
                TodoState.current_filter == identify, "blue.600", "grey.700"
            ),
            colour="white",
            _hover={"background_color": "blue.500"},
            on_click=lambda: TodoState.set_filter(identify),
        )
    
    def render_todo_item(todo: rx.Var[dict]) -> rx.Part:
        return rx.hstack(
            rx.checkbox(
                is_checked=todo["done"],
                on_change=lambda _: TodoState.toggle(todo["id"]),
                measurement="2",
                color_scheme="blue",
            ),
            rx.textual content(
                todo["text"],
                flex="1",
                colour=rx.cond(todo["done"], "grey.500", "white"),
                text_decoration=rx.cond(todo["done"], "line-through", "none"),
            ),
            rx.icon_button(
                "trash",
                color_scheme="crimson",
                variant="gentle",
                on_click=lambda: TodoState.take away(todo["id"]),
            ),
            align="middle",
            spacing="3",
            width="100%",
        )
    
    def todo_input_bar() -> rx.Part:
        return rx.hstack(
            rx.enter(
                placeholder="What must be carried out?",
                worth=TodoState.new_text,
                on_change=TodoState.set_new_text,
                flex="1",
                measurement="3",
                background_color="grey.800",
                colour="white",
                border_color="grey.600",
                _placeholder={"colour": "grey.400"},
            ),
            rx.button(
                "Add",
                measurement="3",
                background_color="blue.600",
                colour="white",
                _hover={"background_color": "blue.500"},
                on_click=TodoState.add_todo,
            ),
            spacing="3",
            width="100%",
        )
    
    def todo_list_panel() -> rx.Part:
        return rx.vstack(
            rx.foreach(TodoState.filtered_todos, render_todo_item),
            spacing="2",
            width="100%",
        )
    
    def footer_bar() -> rx.Part:
        return rx.hstack(
            rx.textual content(TodoState.items_left_label, measurement="2", colour="grey.300"),
            rx.hstack(
                filter_button("all", "All"),
                filter_button("energetic", "Lively"),
                filter_button("carried out", "Finished"),
                spacing="2",
            ),
            rx.button(
                "Clear Accomplished",
                variant="gentle",
                background_color="grey.700",
                colour="white",
                _hover={"background_color": "grey.600"},
                on_click=TodoState.clear_completed,
            ),
            justify="between",
            align="middle",
            width="100%",
        )
    
    def index() -> rx.Part:
        return rx.middle(
            rx.card(
                rx.vstack(
                    rx.heading("Reflex To-Do", measurement="6", colour="white"),
                    todo_input_bar(),
                    rx.separator(border_color="grey.700"),
                    todo_list_panel(),
                    rx.separator(margin_y="2", border_color="grey.700"),
                    footer_bar(),
                    width="min(720px, 92vw)",
                    spacing="4",
                ),
                measurement="4",
                width="min(760px, 96vw)",
                shadow="lg",
                background_color="grey.900",
            ),
            min_h="100vh",
            padding_y="8",
            background_color="black",
        )
    
    app = rx.App()
    app.add_page(index, route="https://www.kdnuggets.com/", title="Reflex To-Do")

     

    The results of the appliance will seem like the picture under.

     
    Building Pure Python Web Apps with ReflexBuilding Pure Python Web Apps with Reflex
     

    Within the code above, the circulate basically works as follows:

    1. The app retains a small reminiscence: your duties, what you’re typing, and which filter is chosen.
    2. You sort within the field and that textual content is saved as you sort.
    3. You press “Add” and the duty is saved (with an id) and the field clears.
    4. The record immediately refreshes to indicate what’s in reminiscence.
    5. Every activity row has a checkbox and a trash icon. Checking toggles completion; the trash removes the duty.
    6. The three filter buttons (All / Lively / Finished) change which duties are seen.
    7. The footer reveals what number of duties will not be carried out and allows you to “Clear Accomplished”.

    Just a few essential distinctions—past the essential elements lined earlier—embrace:

    1. Adorn with @rx.occasion to declare occasions throughout the state.
    2. Adorn with @rx.var to create derived variables within the state.
    3. Use rx.Part signatures when constructing reusable UI helpers on your Reflex software.

    That’s the fundamental rationalization and instance of how Reflex works. Strive it your self and construct the net software you want with pure Python.

     

    Conclusion

     
    Reflex is an open-source library that permits us to construct net functions in pure Python with a easy but intuitive code sample. Its easy setup and easy-to-understand code enable customers to maintain the logic and UI in a single place. It’s a helpful library for newcomers {and professional} builders alike who wish to construct an software with Python.

    I hope this has helped!
     
     

    Cornellius Yudha Wijaya is an information science assistant supervisor and information author. Whereas working full-time at Allianz Indonesia, he likes to share Python and information suggestions through social media and writing media. Cornellius writes on a wide range of AI and machine studying subjects.

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Oliver Chambers
    • Website

    Related Posts

    Remodeling the bodily world with AI: the subsequent frontier in clever automation 

    October 14, 2025

    The Architect’s Dilemma – O’Reilly

    October 14, 2025

    Worldwide Convention on Laptop Imaginative and prescient (ICCV) 2025

    October 13, 2025
    Top Posts

    Evaluating the Finest AI Video Mills for Social Media

    April 18, 2025

    Utilizing AI To Repair The Innovation Drawback: The Three Step Resolution

    April 18, 2025

    Midjourney V7: Quicker, smarter, extra reasonable

    April 18, 2025

    Prison IP to Showcase ASM and CTI Improvements at GovWare 2025 in Singapore

    October 14, 2025
    Don't Miss

    Prison IP to Showcase ASM and CTI Improvements at GovWare 2025 in Singapore

    By Declan MurphyOctober 14, 2025

    Torrance, United States, October 14th, 2025, CyberNewsWirePrison IP at Sales space J30 | Sands Expo…

    OpenAI and Broadcom Announce Strategic Collaboration to Deploy 10 Gigawatts of Customized AI Accelerators by 2029

    October 14, 2025

    Futures of Work ~ Constructing Higher Techniques for Survivors of Exploitation

    October 14, 2025

    Remodeling the bodily world with AI: the subsequent frontier in clever automation 

    October 14, 2025
    Stay In Touch
    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • Vimeo

    Subscribe to Updates

    Get the latest creative news from SmartMag about art & design.

    UK Tech Insider
    Facebook X (Twitter) Instagram
    • About Us
    • Contact Us
    • Privacy Policy
    • Terms Of Service
    • Our Authors
    © 2025 UK Tech Insider. All rights reserved by UK Tech Insider.

    Type above and press Enter to search. Press Esc to cancel.