Curso para aprender desarrollo frontend Web con Python puro desde cero. Elaborado durante las emisiones en directo desde Twitch de MoureDev.
import reflex as rx
import datetime


def footer() -> rx.Component:
    return rx.vstack(
        rx.image(src="favicon.ico"),
        rx.link(
            f"© 2014-{datetime.date.today().year} MOUREDEV BY BRAIS MOURE V3.",
            href="https://mouredev.com",
            is_external=True
        ),
        rx.text("BUILDING SOFTWARE WITH ♥ FROM GALICIA TO THE WORLD.")
    )

link_bio/link_bio/components/footer.py
mouredev/python-web
import reflex as rx


def link_button(text: str, url: str) -> rx.Component:
    return rx.link(
        rx.button(text),
        href=url,
        is_external=True
    )

link_bio/link_bio/components/link_button.py
mouredev/python-web
import reflex as rx


def navbar() -> rx.Component:
    return rx.hstack(
        rx.text(
            "mouredev",
            height="40px"
        ),
        position="sticky",
        bg="blue",
        padding_x="16px",
        padding_y="8px",
        z_index="999"
    )

link_bio/link_bio/components/navbar.py
mouredev/python-web
import reflex as rx
from link_bio.components.navbar import navbar
from link_bio.components.footer import footer
from link_bio.views.header.header import header
from link_bio.views.links.links import links


class State(rx.State):
    pass


def index() -> rx.Component:
    return rx.vstack(
        navbar(),
        header(),
        links(),
        footer()
    )


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

link_bio/link_bio/link_bio.py
mouredev/python-web
import reflex as rx


def header() -> rx.Component:
    return rx.vstack(
        rx.avatar(name="Brais Moure", size="xl"),
        rx.text("@mouredev"),
        rx.text("HOLA 👋🏼 MI NOMBRE ES BRAIS MOURE"),
        rx.text("""Soy ingeniero de software desde hace más de 12 años.
                Actualmente trabajo como freelance full-stack developer iOS y Android.
                Además creo contenido formativo sobre programación y tecnología en redes.
                Aquí podrás encontrar todos mis enlaces de interés. ¡Bienvenid@!""")
    )

link_bio/link_bio/views/header/header.py
mouredev/python-web
import reflex as rx
from link_bio.components.link_button import link_button


def links() -> rx.Component:
    return rx.vstack(
        link_button("Twitch", "https://twitch.tv/mouredev"),
        link_button("YouTube", "https://youtube.com/@mouredev"),
        link_button("YouTube (canal secundario)",
                    "https://youtube.com/@mouredevtv"),
        link_button("Discord", "https://discrod.gg/mouredev")
    )

link_bio/link_bio/views/links/links.py
mouredev/python-web
import reflex as rx

config = rx.Config(
    app_name="link_bio",
)

link_bio/rxconfig.py
mouredev/python-web