# node-native-ui
A cross platform library to build native desktop apps. Based on Qt5.
Mac screenshots:


Linux and Windows screenshots to be added soon.
## Features
- [x] Cross platform. Should work on major Linux flavours, Windows and MacOS
- [x] Low CPU and memory footprint. Current CPU stays at 0% on idle and memory usage is under 20mb for a hello world program.
- [ ] (Partial support is present) Easily exstensible for creating custom native widgets (like react native).
- [x] Support for flex box layouting using Yoga.
- [x] Supports styling using css (includes actual cascading) or atleast useful subset of css properties.
- [x] Complete Nodejs api support (Currently runs on Node v12 - and is easily upgradable).
- [x] Can use all node compatible npm modules.
- [ ] Native widget event listener support.
- [x] Should be usable for commercial applications aswell.
- [ ] (Partial) Should have a decent list of stylable native widgets.
- [ ] Easy build and packaging process.
- [ ] Good Devtools support (hot reload, live reload, debugging etc).
- [ ] Good documentation and website.
- [ ] Good documentation for contributors.
- [x] Good support for dark mode (Thanks to QT).
- [x] Typescript support
## Development setup and getting started
This guide is for setting up `node-native-ui` for contributors of node-native-ui.
The actual getting started guide for users will be added once we reach a bit of stable level.
Make sure you have setup `qode` and installed it globally.
### MacOSX:
**Requirements**
1. Node version: > 9
2. Python and gcc
3. Make sure you dont have spaces inside your home path. NodeGYP has issues with spaces in the path. https://github.com/nodejs/node-gyp/issues/209
**Setting up**
1. Install latest version of Qt (5.12) via homebrew only.
```
brew install qt5
```
### Windows:
**Requirements**
1. Node version: > 9
2. Python and MSVC++
**Setting up**
-- Instructions will be added soon --
### Linux:
**Requirements**
1. Node version: > 9
2. Python, Make, GCC, pkg-config and Qt5
On Ubuntu: `$ sudo apt-get install pkg-config build-essentials` should install everything except Qt5.
**Setting up**
1. Make sure you have downloaded and installed Qt5 sdk.
2. Before running `yard build`, do
`export PKG_CONFIG_PATH="/5.11.0/gcc_64/lib/pkgconfig"`
### Common:
1. Once you have setup the platform specific stuff as mentioned above, follow these:
2. `git clone` this repo.
3. Keep note of the install directory of qt. You should probably find it at `/usr/local/Cellar/qt/5.12.1`. Copy this path and
edit the file `config/common.gypi`.
Change the field
```
'qt_home_dir': '