Skip to content

Latest commit

 

History

History
64 lines (50 loc) · 3.11 KB

README.md

File metadata and controls

64 lines (50 loc) · 3.11 KB

image

PyFyre - The Python Web Frontend Framework

forthebadge

GitHub Version Github Star License

A fast, declarative, and incrementally adoptable Python web frontend framework for building reactive web user interfaces.

Features

  • Component-based framework. Developers who have experience in using other frontend frameworks should feel quite at home when using PyFyre.
  • Truly reactive. PyFyre's virtual DOM allows for simple and efficient state management.
  • Quick navigation. Navigation between pages is quick with PyFyre's single-page application design.
  • Pythonic code with static typing. Developing with PyFyre is much easier with its type hinting and Pythonic style of coding.
  • Asynchronous programming. Run non-blocking functions out of the box.
  • CPython interoperability. Developers can limitedly use CPython packages on the client-side web.
  • JavaScript interoperability. Allowing developers to leverage NPM packages and integrate with existing JavaScript applications.
  • Pure Python. Build web apps without ever touching other languages like HTML and JavaScript.
  • And more!

Example

See the examples directory for more. If you want to quickly test how PyFyre feels or looks like, try our playground! But here is a super simple example. See how easy it is to create a simple Counter app with PyFyre:

from browser import DOMEvent
from pyfyre import render, State
from pyfyre.nodes import Node, Widget, Text, Button


class App(Widget):
    def __init__(self) -> None:
        self.count = State[int](0)
        super().__init__()

    def build(self) -> list[Node]:
        def increment(event: DOMEvent) -> None:
            self.count.set_value(self.count.value + 1)

        def decrement(event: DOMEvent) -> None:
            self.count.set_value(self.count.value - 1)

        return [
            Button(onclick=decrement, children=lambda: [Text("-")]),
            Text(self.count),
            Button(onclick=increment, children=lambda: [Text("+")]),
        ]


render({"/": lambda: App()})

Documentation

Learn PyFyre by reading the documentation. It is also advisable to learn Brython alongside PyFyre as it is built on top of Brython.

Links