ngapp is a Python framework for building interactive scientific and engineering applications as web or desktop apps – without writing JavaScript or HTML. You declare user interfaces in Python, ngapp connects them to a Quasar/Vue frontend, and keeps browser state and Python logic in sync.
ngapp is a good fit when you want to:
- turn scripts or Jupyter notebooks into user-friendly apps,
- build forms, dashboards, and visualizations in pure Python,
- run heavy numerical workflows locally or on remote compute nodes,
- ship your app as a desktop-like tool or as a web app.
Install ngapp and the development extras with:
pip install ngapp[dev]The [dev] extras include tools useful while developing ngapp-based apps. When distributing your own app to end users, you usually only need a dependency on ngapp itself.
-
Open a console in the directory where you want to create the project and run:
python -m ngapp.create_app
The wizard will ask for:
- the Python module name for the project,
- the app name, and
- the name of the app class.
The module name and the app class name must be valid Python identifiers. If you want to create an app with additional backend resources, pass the
--with_backendflag to the command above. -
Start the new app in development mode:
python -m <module_name> --dev
where
<module_name>is the module name you provided. The--devoption starts the app in development mode, which enables hot reloading and other development features. -
You should see a "Hello World" app in your browser. If the browser does not open automatically, click on the link printed in the console.
Open the new module directory in your editor and start coding. As a first step,
change some labels or add print statements to the increment_counter
function in the generated app and observe live updates in the browser and
console.
The new directory called <module_name> will have the following structure:
<module_name>/
├── src/
│ └── <module_name>/
│ ├── __init__.py
│ ├── app.py
│ ├── appconfig.py
│ └── __main__.py
├── .github/
│ └── workflows/
│ └── deploy.yml
├── README.md
└── pyproject.toml
The file <module_name>/src/<module_name>/app.py contains the main app code.
The workflow file .github/workflows/deploy.yml defines a GitHub Actions
pipeline that can automatically deploy your app as a web version to
GitHub Pages.
Full documentation is available at:
https://cerbsim.github.io/ngapp
If you are new to ngapp, start with:
- Getting Started – installation, project layout, first run
- Tutorials – step-by-step examples (parametric sine, NACA generator, beam solver, GitHub deployment)
Then explore:
- Concepts and architecture – core ideas: apps, components, state, compute
- Components – building interfaces from ngapp and Quasar components
- Visualization – interactive plots and 3D views
- Deployment environments – deployment options and compute environments
- Tips and tricks – advanced topics and JavaScript/Quasar integration
LGPL-2.1