{"id":13433536,"url":"https://github.com/justpy-org/justpy","last_synced_at":"2025-05-15T03:03:12.721Z","repository":{"id":37680257,"uuid":"192354244","full_name":"justpy-org/justpy","owner":"justpy-org","description":"An object oriented high-level Python Web Framework that requires no frontend programming","archived":false,"fork":false,"pushed_at":"2023-12-17T20:05:38.000Z","size":13597,"stargazers_count":1245,"open_issues_count":0,"forks_count":97,"subscribers_count":29,"default_branch":"master","last_synced_at":"2025-04-06T21:13:45.278Z","etag":null,"topics":["ag-grid","asgi","asynchronous","highcharts","nicegui","python","quasar-framework","starlette","web-framework"],"latest_commit_sha":null,"homepage":"https://justpy.io","language":"JavaScript","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/justpy-org.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-06-17T13:38:23.000Z","updated_at":"2025-04-05T16:53:52.000Z","dependencies_parsed_at":"2024-01-13T16:20:59.362Z","dependency_job_id":"a950149f-062a-449f-a7c8-dae500f608a1","html_url":"https://github.com/justpy-org/justpy","commit_stats":{"total_commits":681,"total_committers":22,"mean_commits":"30.954545454545453","dds":0.4008810572687225,"last_synced_commit":"1fb7536c94808364aa1e2ddcce7715b054953355"},"previous_names":["elimintz/justpy"],"tags_count":75,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justpy-org%2Fjustpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justpy-org%2Fjustpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justpy-org%2Fjustpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/justpy-org%2Fjustpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/justpy-org","download_url":"https://codeload.github.com/justpy-org/justpy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248804825,"owners_count":21164135,"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":["ag-grid","asgi","asynchronous","highcharts","nicegui","python","quasar-framework","starlette","web-framework"],"created_at":"2024-07-31T02:01:28.573Z","updated_at":"2025-04-14T01:09:42.803Z","avatar_url":"https://github.com/justpy-org.png","language":"JavaScript","readme":"# JustPy\n\n[![pypi](https://img.shields.io/pypi/pyversions/justpy)](https://pypi.org/project/justpy/)\n[![Github Actions Build](https://github.com/elimintz/justpy/workflows/Build/badge.svg?branch=master)](https://github.com/elimintz/justpy/actions?query=workflow%3ABuild+branch%3Amaster)\n[![PyPI Status](https://img.shields.io/pypi/v/justpy.svg)](https://pypi.python.org/pypi/justpy/)\n[![Downloads](https://pepy.tech/badge/justpy)](https://pepy.tech/project/justpy)\n[![GitHub issues](https://img.shields.io/github/issues/elimintz/justpy.svg)](https://github.com/elimintz/justpy/issues)\n[![GitHub closed issues](https://img.shields.io/github/issues-closed/elimintz/justpy.svg)](https://github.com/elimintz/justpy/issues/?q=is%3Aissue+is%3Aclosed)\n[![License](https://img.shields.io/github/license/elimintz/justpy.svg)](https://www.apache.org/licenses/LICENSE-2.0)\n\n## Introduction\n\nJustPy was an object-oriented, component based, high-level Python Web Framework that required no front-end programming. \nWith a few lines of only Python code, you could create interactive websites without any JavaScript programming. \nJustPy could also be used to create graphic user interfaces for Python programs.\n\n## Sunsetting justpy\nSee [discussions-685](https://github.com/justpy-org/justpy/discussions/685) about the sunset of justpy.\nVersion 14.0 is the sunset version. All issues have been closed as \"won't fix\".\nPull Requests are still welcome and will be worked on in a \"best effort\" manner.\nYou might want to migrate to nicegui (see below).\n\n## Docs and Tutorials\n[JustPy Docs and Tutorials](https://justpy.io)\n\n## Live Demos\n[nicegui](https://nicegui.io/)\n\n[justpy demos](https://jpdemo.bitplan.com)\n\n### Examples\n[clickdemo.py](https://github.com/justpy-org/justpy/blob/master/examples/clickdemo.py)\n\n![clickdemo](https://user-images.githubusercontent.com/1336221/187233892-c97aa972-4445-4e12-a3a6-3a23538247b1.gif)\n\n[dogs.py](https://github.com/justpy-org/justpy/blob/master/examples/dogs.py)\n\n![dogs_animated](https://user-images.githubusercontent.com/1336221/187136992-96616390-6c7a-4cd9-9f84-42105749b3c8.gif)\n\n[blackjack.py](https://github.com/justpy-org/justpy/blob/master/examples/blackjack.py)\n\n![blackjack_animated](https://user-images.githubusercontent.com/1336221/187180379-88e5eaf1-c22e-44fa-9820-d946826e223c.gif)\n\n## If you have Questions, Suggestions or would like to get in touch\nIf you have a question about JustPy you are welcome to check\n[stackoverflow questions tagged justpy](https://stackoverflow.com/questions/tagged/justpy) and\nEspecially questions which involve details of upstream frameworks such as\n[ag-grid](https://stackoverflow.com/questions/tagged/ag-grid), Highcharts, Pandas, Plotly, Quasar, Tailwind and others are best ask involving the larger stackoverflow\ncommunity and tagging your question with both \"justpy\" and the tag of\nthe specific library your are asking a question for such as \"ag-grid\", \"highcharts\",\"quasar\", \"pandas\"\nand others.\n\nIf you'd like to specifically address the JustPy contributors the\n[github dicussions](https://github.com/justpy-org/justpy/discussions/new) are place to ask questions,\npropose ideas and generally get in touch with the contributors.\n\nNew features are only possible via your own contribution.\n\nOur github dicussions are categorized. Please use the Category \"Ideas\" for feature requests.\n\nIssues for fixable bugs and Pull Requests are also welcome. Please make sure that you follow the stackoverflow style guidelines when\nposting issues. A good way to do this is to state the problem as a stackoverflow question first. This way a larger audience\nis able to discuss solutions and work arounds and find out which part of the technology stack you are using is actually involved\nin the issue you'd like to get resolved.\n\nIf your followed the procedure you are welcome to [open an issue](https://github.com/justpy-org/justpy/issues/new/choose) in the [JustPy Github repository](https://github.com/justpy-org/justpy)\n\n## Trying out with docker\n```bash\ngit clone https://github.com/justpy-org/justpy\nscripts/rundocker -h\nscripts/rundocker test\nscripts/rundocker example examples/dogs.py\nscripts/rundocker dev\nscripts/rundocker example examples/demo_browser.py\n```\n## Introduction - with more Details\n\nJustPy is an object-oriented, component based, high-level Python Web Framework that requires no front-end programming. With a few lines of only Python code, you can create interactive websites without any JavaScript programming. JustPy can also be used to create graphic user interfaces for Python programs.\n\nUnlike other web frameworks, JustPy has no front-end/back-end distinction. All programming is done on the back-end allowing a simpler, more productive, and more Pythonic web development experience. JustPy removes the front-end/back-end distinction by intercepting the relevant events on the front-end and sending them to the back-end to be processed.\n\nIn JustPy, elements on the web page are instances of component classes. A component in JustPy is a Python class that allows you to instantiate reusable custom elements whose functionality and design is encapsulated away from the rest of your code.\n\nCustom components can be created using other components as building blocks. Out of the box, JustPy comes with support for [HTML](https://justpy.io/#/tutorial/html_components) and [SVG](https://justpy.io/#/tutorial/svg_components) components as well as more complex components such as [charts](https://justpy.io/#/charts_tutorial/introduction) and [grids](https://justpy.io/#/grids_tutorial/introduction).  It also supports most of the components and the functionality of the [Quasar](https://quasar.dev/) library of [Material Design 2.0](https://material.io/) components.\n\nJustPy encourages creating your own components and reusing them in different projects (and, if applicable, sharing these components with others).\n\nJustPy supports visualization using [matplotlib](https://justpy.io/#/tutorial/matplotlib) and [Highcharts](https://justpy.io/#/charts_tutorial/introduction).\n\nJustPy integrates nicely with [pandas](https://pandas.pydata.org/) and simplifies building web sites based on pandas analysis. JustPy comes with a [pandas extension](https://justpy.io/#/charts_tutorial/pandas?id=using-the-pandas-extension) that makes it simple to create interactive charts and grids from pandas data structures.\n\nFor updates and news please follow the [JustPy Twitter account](https://twitter.com/justpyframework)\n\n## Hello World!\n\n```python\nimport justpy as jp\n\ndef hello_world():\n    wp = jp.WebPage()\n    d = jp.Div(text='Hello world!')\n    wp.add(d)\n    return wp\n\njp.justpy(hello_world)\n```\n\nThe program above activates a web server that returns a web page with 'Hello world!' for any request. Locally, you would direct your browser to http://127.0.0.1:8000 or http://localhost:8000/ or  to see the result.\n\nHere is a slightly modified version in which 'Hello world!' changes to 'I was clicked!' when it is clicked.\n\n```python\nimport justpy as jp\n\ndef my_click(self, msg):\n    self.text = 'I was clicked!'\n\ndef hello_world():\n    wp = jp.WebPage()\n    d = jp.Div(text='Hello world!')\n    d.on('click', my_click)\n    wp.add(d)\n    return wp\n\njp.justpy(hello_world)\n```\n\nMany other examples can be found in the [tutorial](https://justpy.io/#/tutorial/getting_started)\n\n## Under the Hood\n\nJustPy's backend is built using:\n* [starlette](https://www.starlette.io/) - \"a lightweight [ASGI](https://asgi.readthedocs.io/en/latest/) framework/toolkit, which is ideal for building high performance asyncio services\".\n* [uvicorn](https://www.uvicorn.org/) - \"a lightning-fast [ASGI](https://asgi.readthedocs.io/en/latest/) server, built on [uvloop](https://github.com/MagicStack/uvloop) and [httptools](https://github.com/MagicStack/httptools)\".\n\nJustPy's frontend (which is transparent to JustPy developers) is built using:\n* [Vue.js](https://vuejs.org/) - \"The Progressive JavaScript Framework\"\n\nThe way JustPy removes the frontend/backend distinction is by intercepting the relevant events on the frontend and sending them to the backend to be processed.\n\n## License\n\n[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt)\n\nCopyright (c) 2019-2024, Eliezer Mintz and justpy contributors\n","funding_links":[],"categories":["JavaScript","Programming","Web Frameworks"],"sub_categories":["Python  \u003cimg src=\"https://raw.github.com/pcgeek86/awesome-trevor/main/assets/Python.svg?sanitize=true\" height=18\u003e"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustpy-org%2Fjustpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjustpy-org%2Fjustpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjustpy-org%2Fjustpy/lists"}