{"id":13460263,"url":"https://github.com/zauberzeug/nicegui","last_synced_at":"2026-10-18T22:02:54.133Z","repository":{"id":39411274,"uuid":"365250183","full_name":"zauberzeug/nicegui","owner":"zauberzeug","description":"Create web-based user interfaces with Python. The nice way.","archived":false,"fork":false,"pushed_at":"2026-10-07T13:29:51.000Z","size":130551,"stargazers_count":16276,"open_issues_count":61,"forks_count":959,"subscribers_count":94,"default_branch":"main","last_synced_at":"2026-10-10T01:38:07.350Z","etag":null,"topics":["frontend","gui","interaction","interface","interfaces","python","robotics","scripting","toolkit","webapp","website"],"latest_commit_sha":null,"homepage":"https://nicegui.io","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/zauberzeug.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":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","claude":"CLAUDE.md","gemini":null,"cursor":".cursor/rules/general.mdc","copilot":".github/copilot-instructions.md","dco":null,"cla":null,"disclosure":null},"funding":{"github":["zauberzeug"]}},"created_at":"2021-05-07T13:55:05.000Z","updated_at":"2026-10-09T23:21:22.000Z","dependencies_parsed_at":"2023-09-24T09:06:51.227Z","dependency_job_id":"3cea0d95-55f0-436d-ae4e-7e2315a26a96","html_url":"https://github.com/zauberzeug/nicegui","commit_stats":{"total_commits":1981,"total_committers":20,"mean_commits":99.05,"dds":"0.46037354871277136","last_synced_commit":"b93b883e4e7e1f59d81af42c5aa4c13c2e1b0388"},"previous_names":[],"tags_count":324,"template":false,"template_full_name":null,"purl":"pkg:github/zauberzeug/nicegui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zauberzeug%2Fnicegui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zauberzeug%2Fnicegui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zauberzeug%2Fnicegui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zauberzeug%2Fnicegui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zauberzeug","download_url":"https://codeload.github.com/zauberzeug/nicegui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zauberzeug%2Fnicegui/sbom","scorecard":{"id":373586,"data":{"date":"2025-07-07","repo":{"name":"github.com/zauberzeug/nicegui","commit":"3969b6ce43fa3acba40af17ae222cf648cd8f8b6"},"scorecard":{"version":"v5.2.1-18-gbb9c347d","commit":"bb9c347dff6349d986baab6578a46d68a5524c62"},"score":4.8,"checks":[{"name":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 14 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#security-policy"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish.yml:41"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 16 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"18 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6jv-p6r8-j78w","Warn: Project is vulnerable to: PYSEC-2024-118 / GHSA-3hjh-jh2h-vrg6","Warn: Project is vulnerable to: GHSA-f2jm-rw3h-6phg","Warn: Project is vulnerable to: GHSA-h5gc-rm8j-5gpr","Warn: Project is vulnerable to: GHSA-q25c-c977-4cmh","Warn: Project is vulnerable to: PYSEC-2024-52 / GHSA-5357-c2jx-v7qh","Warn: Project is vulnerable to: GHSA-3448-vrgh-85xr","Warn: Project is vulnerable to: GHSA-8849-5h85-98qw","Warn: Project is vulnerable to: GHSA-hxfw-jm98-v4mq","Warn: Project is vulnerable to: GHSA-jggw-2q6g-c3m6","Warn: Project is vulnerable to: GHSA-m6vm-8g8v-xfjh","Warn: Project is vulnerable to: GHSA-q799-q27x-vp7w","Warn: Project is vulnerable to: GHSA-qr4w-53vh-m672","Warn: Project is vulnerable to: GHSA-x3rm-644h-67m8","Warn: Project is vulnerable to: PYSEC-2023-183","Warn: Project is vulnerable to: PYSEC-2020-144 / GHSA-9j2c-x8qm-qmjq","Warn: Project is vulnerable to: GHSA-48p4-8xcf-vxj5","Warn: Project is vulnerable to: GHSA-pq67-6m6q-mj2v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:74: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:93: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:103: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:114: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:127: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:130: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/zauberzeug/nicegui/test.yml/main?enable=pin","Warn: containerImage not pinned by hash: .devcontainer/Dockerfile:1: pin your Docker image by updating python:3.8 to python:3.8@sha256:d411270700143fa2683cc8264d9fa5d3279fd3b6afff62ae81ea2f9d070e390c","Warn: containerImage not pinned by hash: development.dockerfile:1: pin your Docker image by updating python:3.8-slim to python:3.8-slim@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f","Warn: containerImage not pinned by hash: examples/ros2/Dockerfile:1: pin your Docker image by updating ros:humble-ros-base to ros:humble-ros-base@sha256:6faa295af1dddacafa9e4f381c9500ca2a7ee215503056f5eab2f450a5f267e1","Warn: containerImage not pinned by hash: fly.dockerfile:1: pin your Docker image by updating python:3.11-slim to python:3.11-slim@sha256:139020233cc412efe4c8135b0efe1c7569dc8b28ddd88bddb109b764f8977e30","Warn: containerImage not pinned by hash: release.dockerfile:1","Warn: containerImage not pinned by hash: release.dockerfile:14","Warn: pipCommand not pinned by hash: .devcontainer/Dockerfile:29","Warn: pipCommand not pinned by hash: .devcontainer/Dockerfile:29","Warn: pipCommand not pinned by hash: .devcontainer/Dockerfile:32","Warn: pipCommand not pinned by hash: development.dockerfile:6-8","Warn: pipCommand not pinned by hash: development.dockerfile:6-8","Warn: pipCommand not pinned by hash: development.dockerfile:15","Warn: pipCommand not pinned by hash: examples/ros2/Dockerfile:11","Warn: pipCommand not pinned by hash: fly.dockerfile:7-18","Warn: downloadThenRun not pinned by hash: fly.dockerfile:20-23","Warn: pipCommand not pinned by hash: fly.dockerfile:31","Warn: pipCommand not pinned by hash: fly.dockerfile:40","Warn: pipCommand not pinned by hash: release.dockerfile:10","Warn: pipCommand not pinned by hash: release.dockerfile:12","Warn: pipCommand not pinned by hash: release.dockerfile:20","Warn: pipCommand not pinned by hash: release.dockerfile:22-31","Warn: downloadThenRun not pinned by hash: scripts/codemirror/bundle.bash:5","Warn: npmCommand not pinned by hash: scripts/codemirror/bundle.bash:19","Warn: npmCommand not pinned by hash: scripts/codemirror/bundle.bash:21","Warn: npmCommand not pinned by hash: scripts/codemirror/bundle.bash:23","Warn: pipCommand not pinned by hash: test_startup.sh:60","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:40","Warn: pipCommand not pinned by hash: .github/workflows/publish.yml:135","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of  14 third-party GitHubAction dependencies pinned","Info:   0 out of   6 containerImage dependencies pinned","Info:   0 out of  17 pipCommand dependencies pinned","Info:   0 out of   2 downloadThenRun dependencies pinned","Info:   0 out of   3 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/bb9c347dff6349d986baab6578a46d68a5524c62/docs/checks.md#fuzzing"}}]},"last_synced_at":"2025-08-18T13:34:22.878Z","repository_id":39411274,"created_at":"2025-08-18T13:34:22.878Z","updated_at":"2025-08-18T13:34:22.878Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":344872684,"owners_count":38342694,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-10-03T21:59:58.778Z","status":"online","status_checked_at":"2026-10-18T02:00:06.448Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["frontend","gui","interaction","interface","interfaces","python","robotics","scripting","toolkit","webapp","website"],"created_at":"2024-07-31T10:00:38.309Z","updated_at":"2026-10-18T22:02:54.124Z","avatar_url":"https://github.com/zauberzeug.png","language":"Python","funding_links":["https://github.com/sponsors/zauberzeug"],"categories":["Python","Web","🎯 Tool Categories","JavaScript","HarmonyOS","语言资源库","GUI Development","Web UI","website","frontend","Front-end frameworks"],"sub_categories":["Web Frameworks","🎨 ML User Interfaces","Windows Manager","python","More"],"readme":"\u003ca href=\"https://nicegui.io/#about\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/zauberzeug/nicegui/main/screenshot.png\"\n    width=\"200\" align=\"right\" alt=\"Try online!\" /\u003e\n\u003c/a\u003e\n\n# NiceGUI\n\nNiceGUI is an easy-to-use, Python-based UI framework, which shows up in your web browser.\nYou can create buttons, dialogs, Markdown, 3D scenes, plots and much more.\n\nIt is great for micro web apps, dashboards, robotics projects, smart home solutions and similar use cases.\nYou can also use it in development, for example when tweaking/configuring a machine learning algorithm or tuning motor controllers.\n\nNiceGUI is available as [PyPI package](https://pypi.org/project/nicegui/), [Docker image](https://hub.docker.com/r/zauberzeug/nicegui) and on [conda-forge](https://anaconda.org/conda-forge/nicegui) as well as [GitHub](https://github.com/zauberzeug/nicegui).\n\n[![PyPI](https://img.shields.io/pypi/v/nicegui?color=dark-green)](https://pypi.org/project/nicegui/)\n[![PyPI downloads](https://img.shields.io/pypi/dm/nicegui?color=dark-green)](https://pypi.org/project/nicegui/)\n[![Conda version](https://img.shields.io/conda/v/conda-forge/nicegui?color=green\u0026label=conda-forge)](https://anaconda.org/conda-forge/nicegui)\n[![Conda downloads](https://img.shields.io/conda/dn/conda-forge/nicegui?color=green\u0026label=downloads)](https://anaconda.org/conda-forge/nicegui)\n[![Docker pulls](https://img.shields.io/docker/pulls/zauberzeug/nicegui)](https://hub.docker.com/r/zauberzeug/nicegui)\u003cbr /\u003e\n[![GitHub license](https://img.shields.io/github/license/zauberzeug/nicegui?color=orange)](https://github.com/zauberzeug/nicegui/blob/main/LICENSE)\n[![GitHub commit activity](https://img.shields.io/github/commit-activity/m/zauberzeug/nicegui)](https://github.com/zauberzeug/nicegui/graphs/commit-activity)\n[![GitHub issues](https://img.shields.io/github/issues/zauberzeug/nicegui?color=blue)](https://github.com/zauberzeug/nicegui/issues)\n[![GitHub forks](https://img.shields.io/github/forks/zauberzeug/nicegui)](https://github.com/zauberzeug/nicegui/network)\n[![GitHub stars](https://img.shields.io/github/stars/zauberzeug/nicegui)](https://github.com/zauberzeug/nicegui/stargazers)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7785516.svg)](https://doi.org/10.5281/zenodo.7785516)\n\n## Features\n\n- browser-based graphical user interface\n- implicit reload on code change\n- acts as webserver (accessed by the browser) or in native mode (eg. desktop window)\n- standard GUI elements like label, button, checkbox, switch, slider, input, file upload, ...\n- simple grouping with rows, columns, cards and dialogs\n- general-purpose HTML and Markdown elements\n- powerful high-level elements to\n  - plot graphs and charts,\n  - render 3D scenes,\n  - get steering events via virtual joysticks\n  - annotate and overlay images\n  - interact with tables\n  - navigate foldable tree structures\n  - embed video and audio files\n- built-in timer to refresh data in intervals (even every 10 ms)\n- straight-forward data binding and refreshable functions to write even less code\n- notifications, dialogs and menus to provide state of the art user interaction\n- shared and individual web pages\n- easy-to-use per-user and general persistence\n- ability to add custom routes and data responses\n- capture keyboard input for global shortcuts etc.\n- customize look by defining primary, secondary and accent colors\n- live-cycle events and session data\n- runs in Jupyter Notebooks and allows Python's interactive mode\n- auto-complete support for Tailwind CSS\n- SVG, Base64 and emoji favicon support\n- testing framework based on pytest\n\n## Installation\n\n```bash\npython3 -m pip install nicegui\n```\n\n## Usage\n\nWrite your nice GUI in a file `main.py`:\n\n```python\nfrom nicegui import ui\n\nui.label('Hello NiceGUI!')\nui.button('BUTTON', on_click=lambda: ui.notify('button was pressed'))\n\nui.run()\n```\n\nLaunch it with:\n\n```bash\npython3 main.py\n```\n\nThe GUI is now available through http://localhost:8080/ in your browser.\nNote: NiceGUI will automatically reload the page when you modify the code.\n\n## Documentation and Examples\n\nThe documentation is hosted at [https://nicegui.io/documentation](https://nicegui.io/documentation) and provides plenty of live demos.\nThe whole content of [https://nicegui.io](https://nicegui.io) is [implemented with NiceGUI itself](https://github.com/zauberzeug/nicegui/blob/main/main.py)\nand can be started locally with `docker run -p 8080:8080 zauberzeug/nicegui` or by executing `main.py` from this repository.\n\nYou may also have a look at our [in-depth examples](https://github.com/zauberzeug/nicegui/tree/main/examples) of what you can do with NiceGUI.\nIn our wiki we have a list of great [NiceGUI projects from the community](https://github.com/zauberzeug/nicegui/wiki#community-projects), a section with [Tutorials](https://github.com/zauberzeug/nicegui/wiki#tutorials) and a growing list of [FAQs](https://github.com/zauberzeug/nicegui/wiki/FAQs).\nWhen building NiceGUI projects with AI assistants, point them at [`nicegui/llms.md`](nicegui/llms.md) — a concise reference that ships with the package (also served at \u003chttps://nicegui.io/llms.txt\u003e).\n\n## Why?\n\nWe at [Zauberzeug](https://zauberzeug.com) like [Streamlit](https://streamlit.io/)\nbut find it does [too much magic](https://github.com/zauberzeug/nicegui/issues/1#issuecomment-847413651) when it comes to state handling.\nIn search for an alternative nice library to write simple graphical user interfaces in Python we discovered [JustPy](https://justpy.io/).\nAlthough we liked the approach, it is too \"low-level HTML\" for our daily usage.\nBut it inspired us to use [Vue](https://vuejs.org/) and [Quasar](https://quasar.dev/) for the frontend.\n\nWe have built on top of [FastAPI](https://fastapi.tiangolo.com/),\nwhich itself is based on the ASGI framework [Starlette](https://www.starlette.io/)\nand the ASGI webserver [Uvicorn](https://www.uvicorn.org/)\nbecause of their great performance and ease of use.\n\n## Sponsors\n\nMaintenance of this project is made possible by all the [contributors](https://github.com/zauberzeug/nicegui/graphs/contributors) and [sponsors](https://github.com/sponsors/zauberzeug).\nIf you would like to support this project and have your avatar or company logo appear below, please [sponsor us](https://github.com/sponsors/zauberzeug). 💖\n\n\u003c!-- SPONSORS --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/lechler-gmbh\"\u003e\u003cimg src=\"https://github.com/lechler-gmbh.png\" width=\"50px\" alt=\"Lechler GmbH\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Zhifeng2019\"\u003e\u003cimg src=\"https://github.com/Zhifeng2019.png\" width=\"50px\" alt=\"Zhifeng\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/whoulden\"\u003e\u003cimg src=\"https://github.com/whoulden.png\" width=\"50px\" alt=\"Wayne Houlden\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/digiquip\"\u003e\u003cimg src=\"https://github.com/digiquip.png\" width=\"50px\" alt=\"DigiQuip AS\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/aitech95\"\u003e\u003cimg src=\"https://github.com/aitech95.png\" width=\"50px\" alt=\"JACOB SHI \" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.testmuai.com/?utm_medium=sponsor\u0026utm_source=nicegui\"\u003e\u003cimg src=\"https://github.com/LambdaTest-Inc.png\" width=\"50px\" alt=\"TestMu AI Open Source Office (Formerly LambdaTest)\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Zaga-Solutions\"\u003e\u003cimg src=\"https://github.com/Zaga-Solutions.png\" width=\"50px\" alt=\"Zaga Solutions\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/discolike\"\u003e\u003cimg src=\"https://github.com/discolike.png\" width=\"50px\" alt=\"DiscoLike Inc.\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c!-- SPONSORS --\u003e\n\nConsider this low-barrier form of contribution yourself.\nYour [support](https://github.com/sponsors/zauberzeug) is much appreciated.\n\n## Contributing\n\nThank you for your interest in contributing to NiceGUI! We are thrilled to have you on board and appreciate your efforts to make this project even better.\n\nAs a growing open-source project, we understand that it takes a community effort to achieve our goals. That's why we welcome all kinds of contributions, no matter how small or big they are. Whether it's adding new features, fixing bugs, improving documentation, or suggesting new ideas, we believe that every contribution counts and adds value to our project.\n\nWe have provided a detailed guide on how to contribute to NiceGUI in our [CONTRIBUTING.md](https://github.com/zauberzeug/nicegui/blob/main/CONTRIBUTING.md) file. We encourage you to read it carefully before making any contributions to ensure that your work aligns with the project's goals and standards.\n\nIf you have any questions or need help with anything, please don't hesitate to reach out to us. We are always here to support and guide you through the contribution process.\n\n## Included Web Dependencies\n\nSee [DEPENDENCIES.md](https://github.com/zauberzeug/nicegui/blob/main/DEPENDENCIES.md) for a list of web frameworks NiceGUI depends on.\n\n## Architecture\n\nNiceGUI is a Python framework for building web UIs with a **backend-first philosophy**.\nKey architectural decisions:\n\n- **Backend-first**: All UI logic lives in Python; the framework handles web details\n- **Tech stack**: Python/FastAPI backend, Vue/Quasar frontend, socket.io for communication\n- **Single worker**: Uses one uvicorn worker (thanks to full async support, no multi-process synchronization needed)\n- **Real-time communication**: WebSocket connection is established after initial page load, kept open for client-server communication\n- **User interactions**: All UI events are sent to backend and invoke Python functions, which can then generate UI updates\n- **Outbox**: Accumulates UI updates and sends them in batches to the client\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzauberzeug%2Fnicegui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzauberzeug%2Fnicegui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzauberzeug%2Fnicegui/lists"}