Loading repository data…
Loading repository data…
Neuri-AI / repository
PPG is a powerful modern framework for building scalable desktop applications with Python and Qt. It features a React-inspired component-based architecture, an advanced global state management system, and support for hybrid interfaces combining native widgets with modern web UIs.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
PPG is a modern and powerful framework for building scalable desktop applications with Python and Qt. It offers a component-based architecture inspired by React, an advanced global state management system (Pydux), and seamless support for hybrid interfaces that combine native widgets with modern web UIs. With a comprehensive CLI and an innovative hot-reloading engine, PPG provides a complete and efficient workflow for developers.
The PPG workflow is simple and intuitive. Here’s how you can initialize, run, and compile your first application:
# 1. Install PPG using pip
pip install ppg
# 2. Initialize a new project with the CLI
ppg init
# 3. Run your application in development mode
ppg start
# 4. Compile your app into a standalone executable
ppg freeze
# 5. Create an installer for your application
ppg installer
For best practices, we recommend using a virtual environment.
# With conda
conda create -n my-env python=3.11 -y
conda activate my-env
# With virtualenv
python -m venv venv
# macOS/Linux:
source venv/bin/activate
# Windows:
.\venv\Scripts\activate.bat
pip install ppg
Alternatively, you can install the latest development version directly from GitHub:
pip install git+https://github.com/neuri-ai/PPG.git
Or clone the repository and install it locally:
git clone https://github.com/neuri-ai/PPG
cd PPG
python setup.py install
The PPG CLI allows you to manage your project efficiently.
| Command | Description |
|---|---|
ppg init | Initializes a new project in the current directory with an interactive setup. |
ppg start | Runs your application from the source code in development mode. |
ppg create | Creates a new component or view from templates, maintaining your project's structure. |
ppg freeze | Compiles your code into a standalone executable for distribution. |
ppg installer | Creates a user-friendly installer for your app (e.g., .exe on Windows, .dmg on macOS). |
ppg test | Automatically runs the unit tests for your project. |
ppg clean | Cleans up temporary and build files generated by PPG. |
Traditional Qt is event-driven, but it lacks a structured lifecycle for managing UI components at a high level. This can lead to complex, hard-to-maintain code as applications grow.
PPG solves this with a well-defined, React-inspired component lifecycle. It provides clear hooks for every stage of a component's life, from creation to destruction. This allows you to write clean, predictable code by providing specific moments to:
This architecture brings a modern and robust development experience to both native Qt widgets and hybrid web components.
Pydux is PPG's global state management system, inspired by JavaScript's Redux. It provides a type-safe, reactive way to manage application state across components. Pydux uses Pydantic for data validation and serialization, ensuring that your state is always consistent and reliable.
PPGStore has been deprecated. It is highly recommended to migrate to Pydux to leverage all of its features.PPG supports hybrid development, allowing you to combine native Qt widgets with modern web UIs (like React or Vue) in the same application. This enables you to:
WebEngineBridge and BridgeManager provide a bidirectional messaging channel, allowing your web frontend and Python backend to communicate transparently.exec(), while PySide2 uses exec_()) ✅QApplication singleton required destruction before creating a new instance of QApplication ✅get_resource method, which previously could not be used normally ✅resources folder not being created when running ppg init ✅ppg init would fail due to a missing src/build/settings/base.json file on new projects ✅build_settings could not be accessed in compiled applications and source projects ✅update_nested_model() method for efficient updates of nested objects ✨get_nested() method for intuitive data retrieval (e.g., store.get_nested("user.name")) ✨PPGStore is now marked as deprecated. Use Pydux instead.
Backward compatibility is maintained for all v1.1.x versions, but PPGStore will be removed in a future major release.WebEngineBridge and BridgeManager classes to simplify communication between Python and web-based user interfaces built with React, Vue, or plain HTML/CSS/JS 🎉Luis Alfredo Reyes
I would like to thank the following people for their contributions to this project, your pull requests, bug reports, and suggestions have been invaluable:
Code and documentation copyright 2020–2025. PPG Code released under the GPL v3 License. Docs released under Creative Commons.