{"id":13468629,"url":"https://github.com/kkinder/puepy","last_synced_at":"2026-01-17T07:21:18.794Z","repository":{"id":241399007,"uuid":"737589528","full_name":"kkinder/puepy","owner":"kkinder","description":"Python+Webassembly Frontend Framework via PyScript","archived":false,"fork":false,"pushed_at":"2025-03-06T05:04:28.000Z","size":3384,"stargazers_count":314,"open_issues_count":9,"forks_count":16,"subscribers_count":12,"default_branch":"main","last_synced_at":"2026-01-14T01:42:15.795Z","etag":null,"topics":["framework","frontend","frontend-framework","pyscript","python","reactive","webassembly"],"latest_commit_sha":null,"homepage":"https://puepy.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kkinder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-31T16:39:33.000Z","updated_at":"2026-01-03T22:59:49.000Z","dependencies_parsed_at":"2024-05-28T06:12:38.188Z","dependency_job_id":"3f4345a6-8b2d-4754-9ec8-da925e80b7f3","html_url":"https://github.com/kkinder/puepy","commit_stats":null,"previous_names":["kkinder/puepy"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/kkinder/puepy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkinder%2Fpuepy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkinder%2Fpuepy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkinder%2Fpuepy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkinder%2Fpuepy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kkinder","download_url":"https://codeload.github.com/kkinder/puepy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkinder%2Fpuepy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28503591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["framework","frontend","frontend-framework","pyscript","python","reactive","webassembly"],"created_at":"2024-07-31T15:01:15.305Z","updated_at":"2026-01-17T07:21:18.768Z","avatar_url":"https://github.com/kkinder.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# PuePy - PyScript Frontend Framework\n\n➡️ [Project Website](https://puepy.dev)\n📝 [Project Documentation](https://docs.puepy.dev/)\n\nPuePy is a lightweight web framework that uses WebAssembly via [PyScript](https://pyscript.net) to put Python right in your browser with all the modern conveniences of a web framework, but none of the headaches of Webpack, NPM or even JavaScript.\n\n- Reactive data binding with component-based architecture\n- Single Page App (SPA) router included\n- No build layer: direct execution like other Python projects\n- Choice of full [Pyodide](https://pyodide.org/en/stable/) or [Micropython](https://micropython.org/)\n\n## 🐒 Try a demo app\n\nSee [ExpenseLemur.com](https://expenselemur.com) and the [Expense Lemur Github Repo](https://github.com/kkinder/expenselemur) for a demonstration of what PuePy is capable of.\n\n## 🧑‍💻 See some code\n\n```python\nfrom puepy import Page, Application, t\n\napp = Application()\n\n\n@app.page()\nclass Hello(Page):\n    def initial(self):\n        return dict(name=\"\")\n\n    def populate(self):\n        with t.div(classes=[\"container\", \"mx-auto\", \"p-4\"]):\n            t.h1(\"Welcome to PyScript\", classes=[\"text-xl\", \"pb-4\"])\n            if self.state[\"name\"]:\n                t.p(f\"Hello there, {self.state['name']}\")\n            else:\n                t.p(\"Why don't you tell me your name?\")\n            t.input(placeholder=\"Enter your name\", bind=\"name\")\n            t.button(\"Continue\", classes=\"btn btn-lg\", on_click=self.on_button_click)\n\n    def on_button_click(self, event):\n        print(\"Button clicked\")  # This logs to console\n\n\napp.mount(\"#app\")\n```\n\n## Learn\n\n- **Project Website**: [puepy.dev](https://puepy.dev/)\n- **Documentation**: [docs.puepy.dev](https://docs.puepy.dev/)\n\n## License\n\nPuePy is licensed under the Apache 2 license, for your coding convenience.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkkinder%2Fpuepy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkkinder%2Fpuepy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkkinder%2Fpuepy/lists"}