DEV Community

Moon Light
Moon Light

Posted on

๐Ÿš€ Build a Full-Stack Python Web App (No JS Framework Needed)

Most developers assume you need React, Next.js, or Vue for modern web apps.

But what if you could build a full-stack app using just Python?

In this post, Iโ€™ll show you how to build a real web app using Reflex โ€” a framework that lets you create frontend + backend entirely in Python.


๐Ÿง  What Youโ€™ll Build

Weโ€™ll create a simple Task Manager App with:

  • Add tasks
  • Delete tasks
  • Reactive UI (auto updates)
  • Clean component-based structure

โš™๏ธ Setup

First, install Reflex:

pip install reflex
Enter fullscreen mode Exit fullscreen mode

Create a new project:

reflex init task_app
cd task_app
reflex run
Enter fullscreen mode Exit fullscreen mode

๐Ÿ“ Project Structure (Simplified)

task_app/
โ”œโ”€โ”€ task_app/
โ”‚   โ”œโ”€โ”€ state.py
โ”‚   โ”œโ”€โ”€ pages/
โ”‚   โ”‚   โ””โ”€โ”€ index.py
โ”‚   โ””โ”€โ”€ components/
Enter fullscreen mode Exit fullscreen mode

๐Ÿงฉ Step 1: Create State (Backend Logic)

import reflex as rx

class State(rx.State):
    tasks: list[str] = []

    def add_task(self, task: str):
        if task:
            self.tasks.append(task)

    def remove_task(self, task: str):
        self.tasks.remove(task)
Enter fullscreen mode Exit fullscreen mode

๐Ÿ‘‰ This is your backend + state management in one place.


๐ŸŽจ Step 2: Build UI (Frontend in Python)

import reflex as rx
from task_app.state import State

def index():
    return rx.container(
        rx.heading("Task Manager", size="lg"),

        rx.input(
            placeholder="Enter a task...",
            on_blur=State.add_task
        ),

        rx.foreach(
            State.tasks,
            lambda task: rx.hstack(
                rx.text(task),
                rx.button(
                    "Delete",
                    on_click=lambda: State.remove_task(task)
                )
            )
        )
    )
Enter fullscreen mode Exit fullscreen mode

๐Ÿ”ฅ Step 3: Run the App

reflex run
Enter fullscreen mode Exit fullscreen mode

Open your browser โ†’
You now have a fully working web app ๐ŸŽ‰


๐Ÿ’ก Why This Is Interesting

  • ๐Ÿ One language (Python) for everything
  • โšก Reactive UI without writing JavaScript
  • ๐Ÿงฑ Component-based design
  • ๐Ÿš€ Faster prototyping for startups

โš ๏ธ When NOT to Use This

Be realistic:

  • Large-scale frontend apps โ†’ still better with React/Next.js
  • Highly custom UI/animations โ†’ JS ecosystem is stronger

๐Ÿงช Bonus: Improve the App

Try extending it:

  • โœ… Add persistence (SQLite / Postgres)
  • ๐Ÿ” Add authentication
  • ๐ŸŒ Deploy it (Railway, Vercel backend, etc.)

๐Ÿงญ Final Thoughts

Frameworks like Reflex are changing how we think about web development.

For:

  • indie hackers
  • MVP builders
  • AI startup founders

This can be a huge speed advantage.


๐Ÿ‘‡ What do you think?

Would you build a full-stack app using only Python?

Let me know in the comments ๐Ÿ‘‡

Top comments (3)

Collapse
 
agen-it profile image
Pierfelice Menga

Let's focus on that Python library install and app deployment.
I recommned all devs who want to develop the MVP or other python script

Collapse
 
tomorrmonkey profile image
golden Star

Good.

Collapse
 
emir_hammani_8e8724ae852a profile image
Emir Hammani

Impressive blog