{"id":13450062,"url":"https://github.com/pyfyre/pyfyre","last_synced_at":"2025-03-23T16:30:58.084Z","repository":{"id":42102094,"uuid":"346484845","full_name":"pyfyre/pyfyre","owner":"pyfyre","description":"🐍🔥 The Python web frontend framework for building reactive web user interfaces. ✨","archived":false,"fork":false,"pushed_at":"2024-06-11T01:22:46.000Z","size":2597,"stargazers_count":126,"open_issues_count":2,"forks_count":9,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-01T06:17:54.374Z","etag":null,"topics":["declarative","framework","frontend","pyfyre","python","reactive","web"],"latest_commit_sha":null,"homepage":"https://pyfyre.netlify.app","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyfyre.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["pyfyre"]}},"created_at":"2021-03-10T20:34:34.000Z","updated_at":"2025-02-25T03:51:24.000Z","dependencies_parsed_at":"2024-06-09T03:37:31.224Z","dependency_job_id":"09504f7d-42ed-49a9-8634-b6220fa98068","html_url":"https://github.com/pyfyre/pyfyre","commit_stats":{"total_commits":469,"total_committers":3,"mean_commits":"156.33333333333334","dds":0.4392324093816631,"last_synced_commit":"877338b410468a05cacb6f23ddb8364f2dce9b96"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyfyre%2Fpyfyre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyfyre%2Fpyfyre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyfyre%2Fpyfyre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyfyre%2Fpyfyre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyfyre","download_url":"https://codeload.github.com/pyfyre/pyfyre/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245130703,"owners_count":20565697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["declarative","framework","frontend","pyfyre","python","reactive","web"],"created_at":"2024-07-31T07:00:29.120Z","updated_at":"2025-03-23T16:30:57.190Z","avatar_url":"https://github.com/pyfyre.png","language":"Python","funding_links":["https://github.com/sponsors/pyfyre"],"categories":["PyFyre"],"sub_categories":[],"readme":"![image](https://user-images.githubusercontent.com/64759159/151080177-2b2ab45a-86e5-4746-b92f-6c4edd1aaa8f.png)\n\n# PyFyre - The Python Web Frontend Framework\n[![forthebadge](https://forthebadge.com/images/badges/made-with-python.svg)](https://forthebadge.com)\n\n[![GitHub Version](https://img.shields.io/github/release/pyfyre/pyfyre.svg?style=for-the-badge)](https://github.com/pyfyre/pyfyre/releases)\n[![Github Star](https://img.shields.io/github/stars/pyfyre/pyfyre.svg?style=for-the-badge)](https://github.com/pyfyre/pyfyre/stargazers) \n[![License](https://img.shields.io/github/license/pyfyre/pyfyre.svg?style=for-the-badge)](https://github.com/pyfyre/pyfyre/blob/main/LICENSE)\n\nA fast, declarative, and incrementally adoptable Python web frontend framework for building reactive web user interfaces.\n\n## Features\n- **Component-based framework**. Developers who have experience in using other frontend frameworks should feel quite at home when using PyFyre.\n- **Truly reactive**. PyFyre's virtual DOM allows for simple and efficient state management.\n- **Quick navigation**. Navigation between pages is quick with PyFyre's single-page application design.\n- **Pythonic code with static typing**. Developing with PyFyre is much easier with its type hinting and Pythonic style of coding.\n- **Asynchronous programming**. Run non-blocking functions out of the box.\n- **CPython interoperability**. Developers can limitedly use CPython packages on the client-side web.\n- **JavaScript interoperability**. Allowing developers to leverage NPM packages and integrate with existing JavaScript applications.\n- **Pure Python**. Build web apps without ever touching other languages like HTML and JavaScript.\n- **And more!**\n\n## Example\nSee the [examples](examples) directory for more.\nIf you want to quickly test how PyFyre feels or looks like, try our [playground](https://pyfyre.netlify.app/playground/)!\nBut here is a super simple example. See how easy it is to create a simple Counter app with PyFyre:\n```py\nfrom browser import DOMEvent\nfrom pyfyre import render, State\nfrom pyfyre.nodes import Node, Widget, Text, Button\n\n\nclass App(Widget):\n    def __init__(self) -\u003e None:\n        self.count = State[int](0)\n        super().__init__()\n\n    def build(self) -\u003e list[Node]:\n        def increment(event: DOMEvent) -\u003e None:\n            self.count.set_value(self.count.value + 1)\n\n        def decrement(event: DOMEvent) -\u003e None:\n            self.count.set_value(self.count.value - 1)\n\n        return [\n            Button(onclick=decrement, children=lambda: [Text(\"-\")]),\n            Text(self.count),\n            Button(onclick=increment, children=lambda: [Text(\"+\")]),\n        ]\n\n\nrender({\"/\": lambda: App()})\n```\n\n## Documentation\nLearn PyFyre by reading the [documentation](https://pyfyre-docs.netlify.app/).\nIt is also advisable to learn [Brython](https://www.brython.info/) alongside PyFyre as it is built on top of Brython.\n\n## Links\n- [PyPI](https://pypi.org/project/pyfyre/)\n- [Repository](https://github.com/pyfyre/pyfyre)\n- [Documentation](https://pyfyre-docs.netlify.app/)\n- [Facebook Page](https://www.facebook.com/pyfyreframework/)\n- [Discord Server](https://discord.gg/YzEDuqhgZJ)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyfyre%2Fpyfyre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyfyre%2Fpyfyre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyfyre%2Fpyfyre/lists"}