NovaUI
NovaUI is an early-stage Python-first UI framework. Describe interfaces with Python components; a lightweight HTML, CSS, and JavaScript renderer displays the same UI in a browser or an optional desktop webview.
The project favors a small declarative API, ordinary Python for application logic, and explicit boundaries between Python events and browser rendering. NovaUI is an MVP, not a production-ready or fully accessible framework.
What works today
- Browser UI with text, buttons, inputs, layout components, forms, routing, dialogs, and themes.
- Reactive
Statevalues and computedTextcontent refreshed after UI events. - Searchable, sortable, filterable, selectable, paginated in-memory
DataTable. - Optional desktop hosting via
pywebview, with window controls, file dialogs, text clipboard, shortcuts, and menus where the platform backend supports them. - CLI for project creation, running apps, basic checks, and Python package builds.
- Explicit, trusted Python extensions for compositional components, named themes, and app-scoped services.
Python 3.10 or newer is required. Browser mode is the default. Desktop mode needs pywebview plus a platform webview. NovaUI has been tested locally on Linux; CI is configured for additional OS and Python versions, but that is not the same as a completed release compatibility review.
Install and run
NovaUI requires Python 3.10 or newer. The public source repository is
sumankrsaurabh/NovaUI. NovaUI has
not yet been published to PyPI, so pip install novaui is not available yet.
Install this source checkout:
python -m venv .venv
# Linux/macOS: source .venv/bin/activate
# Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install -e '.[dev]'
python examples/counter.py
To install the current source without development tools, use
python -m pip install .. To build a wheel and source archive, use
python -m pip install '.[build]' followed by python -m novaui build.
Install directly from GitHub:
python -m pip install "git+https://github.com/sumankrsaurabh/NovaUI.git"
For a local clone and editable development install:
git clone https://github.com/sumankrsaurabh/NovaUI.git
cd NovaUI
python -m pip install -e '.[dev]'
The default branch may change without notice. A version-tag install becomes
available after the corresponding tag is published, for example
python -m pip install "git+https://github.com/sumankrsaurabh/NovaUI.git@v0.1.0".
The PyPI command python -m pip install novaui will work after the first
package release.
Directly running an example opens a browser by default. To scaffold a project with the CLI:
novaui create hello_app
cd hello_app
novaui run --open-browser
For a desktop window, install the optional dependency and run an example with --desktop:
python -m pip install -e '.[desktop]'
python examples/counter.py --desktop
For the optional Qt webview backend:
python -m pip install -e '.[desktop-qt]'
Qt's license and platform requirements should be reviewed before redistributing
desktop applications. The base package has no runtime dependencies; dev and
build extras are only for maintainers.
Linux also needs a supported GTK/WebKitGTK or Qt/WebEngine backend and a graphical session. The desktop-qt extra installs Qt Python packages with their own license terms; see desktop setup before distributing an application.
Minimal app
import novaui as ui
count = ui.state(0)
ui.app(
ui.Column(
ui.Text("Hello, NovaUI!", size=28, bold=True),
ui.Text(lambda: f"Count: {count.value}"),
ui.Button("Add", on_click=lambda: count.update(count.value + 1)),
spacing=16,
padding=24,
),
title="Counter",
)
Text supports bold=True; there is no weight argument. Inputs can bind to ui.state(...), and callback events are registered by opaque IDs. See the first app tutorial for a complete walkthrough.
Documentation and examples
- Documentation index
- Installation and first app
- Component reference
- Forms and routing
- CLI reference
- Extension guide
- Security policy and limitations
- Examples gallery
- Phase 11 application validation guide
The examples/ directory contains counters, forms, dashboards, tables, routing, desktop utilities, extension samples, and the Phase 11 Studio, Admin, and PyOffice Notes applications. See the gallery for the correct run mode; desktop examples require a working GUI backend.
Development and releases
python -m pip install -e '.[dev]'
PYTHONPATH=. python -m pytest -q
python -m ruff check novaui tests examples packaging
node --check novaui/frontend/app.js
python -m build --sdist --wheel
python -m twine check dist/*
HTTP tests need permission to bind loopback sockets. novaui check runs syntax/import/metadata checks and project tests; it is not a security audit. The repeatable release checklist is in RELEASING.md. Do not publish artifacts without maintainer authorization.
Current limitations
- The local server is for development and desktop use, not hardened public hosting. It has no user authentication or process isolation.
- Updates are requested after UI events; background state changes are not pushed live. The server returns the full component tree after interactions.
- Tables are in-memory and not virtualized. Editable grids, charts, rich-text editors, upload/download widgets, and command palettes are not implemented.
- Forms validate supported string fields synchronously. Repeat security-sensitive validation in trusted application services.
- Accessibility and cross-platform desktop behavior still need broader manual review. Desktop dialogs, menus, and clipboard support depend on the OS backend.
- Extensions execute trusted Python in-process; they are not sandboxed and are not automatically discovered.
- The public API is experimental before 1.0; see contribution and compatibility guidance.
NovaUI is distributed under the MIT License. Contributions and security reports are welcome; see CONTRIBUTING.md and SECURITY.md.
To uninstall a source or PyPI installation, run python -m pip uninstall novaui in the same environment. Release builds and publication setup are documented in RELEASING.md; publishing is intentionally a separate, maintainer-authorized step.
Metadata
Release files for novaui 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| novaui-0.1.0.tar.gz | 113.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| novaui-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 172.3 kB
Release files / novaui-0.1.0.tar.gz
| Download URL | novaui-0.1.0.tar.gz |
|---|---|
| Size | 113.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
144876bee724413b73107c26b18ecdc1cf42d6f8ba6ad85a251ede58a20485de
|
|
BLAKE2b-256 checksum How to use checksums |
3dd97dda876c5fb13dbabe112c7fea51e8f894893c0c1d0835680a6f310507db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logRelease files / novaui-0.1.0-py3-none-any.whl
| Download URL | novaui-0.1.0-py3-none-any.whl |
|---|---|
| Size | 58.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a2fa9d03cc26dd38fa35d0eae20a175ad155c7f3ca16e98951fc7a8e37d7d35f
|
|
BLAKE2b-256 checksum How to use checksums |
97ba080fe9d2cc101b84752a1ca3b67ae3cebb5caedb3c7d34cbc384d2b25548
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logSecurity for novaui 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for novaui-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.