> This project is currently in development, this is NOT ready for production use

> As for auto updating features, Korbs Studio does offer it's own update server at a montly fee of $4.23/month

If you have any question concerning FalixNodes Desktop or Nexus Polestar development, you can either submit an issue or email me at [hello@korbsstudio.com](mailto:hello@korbsstudio.com).

___

# Nexus Polestar
A template replacement for FalixNodes Desktop.

![](https://cdn.korbsstudio.com/images/nexus-polestar-cover.png)

___

## What was FalixNodes Desktop?
FalixNodes Desktop was developed by Korbs Studio, a FalixNodes Limited contractor. It was intended for its desktop customers to use FalixNodes more quickly and conveniently by allowing them to easily access both the client and game panels presented by FalixNodes. The capabilities of how the software works have progressed over time, and improved performance and security practices have been put in place to make the customer experience more efficient and trustworthy.

Sadly, the software was [discontinued by Korbs Studio on November 19th of 2022](https://falixnodes.net/blog/sunsetting-apps/). 

This is a bit of a disappointed, as some major features were being applied to v4 of FalixNodes Desktop, which remained in development for way over a year and never reached production. This forth major version was suppose to get amazing features like built-in SFTP manager, VPN(This was drop either way, requested by FalixNodes Limited CEO), better system optimizations, and a command menu. One of the feature did that come to light and was finished during the development phase was the command menu powered by Ninja Keys.

[You can view more about what was suppose to happen in v4.](https://falixnodes.net/blog/sunsetting-apps/#:~:text=to%20webview%20issues.-,The%20Future%20%2D%20v4,-Since%20the%20software)

From the blog post about this matter:

> Final thoughts from the developer: I've enjoyed creating and making updates to both FalixNodes Desktop and FalixNodes App for desktop and mobile over the years for the company, it's sad to sunset these apps, but I don't have time anymore for these and no longer movivation to continue forward. Thanks to FalixNodes Desktop, I've gained a lot more experience and knowledge in the ElectronJS framework and how to work in it, and create amazing things; and thanks to FalixNodes app which allowed me to learn about mobile development using a framework like React Native and getting to know the workflow behind Expo. While I'm not going to be working on our applications anymore, I will still be working at FalixNodes Limited as our website developer for our homepage.

## Then Why the Template?
Well, it's come to my attention after many emails from other companies, even after being discontinued, they have forked the project and are using this for their customers. So, I created this template for them and for more to come, as I don't want these companies using outdated source code.

So, here is Nexus Polestar, a template they can build their desktop app on top of for their customers, to replace the old source code from FalixNodes Desktop.

## What's the Difference?
While FalixNodes Desktop has always been constructed using vanilla HTML, CSS, and JavaScript, as well as primitive code from 4 years ago and older to still navigate and add additional settings, Nexus Polestar will be developed with Astro, as well as SCSS and more modernized scripts for features such as navigating and additional settings. 

By using Astro, I can make the template more component based, allowing for more flexiblity for other developers at these other companies.

___

## In Development
The following features are planned:
 - Crash Report
 - Deep Links
 - Light Theme [Why?](#why-add-light-mode)
 - Notification System
 - Progress indicators
 - Skeleton State [What's this?](#what-is-skeleton-state)
 - Splash
 - System Respect [What's this?](#what-do-you-mean-by-system-respect)
 - Components for:
   - Navigation
   - Notifications
   - Overlays
   - Settings
   - Sidebar

### What do you mean by System Respect?

A part of this function of Nexus Polestar will only be utilized on Windows and mostly macOS, as Electron's `systemPreferences` API doesn't support Linux.

Basically, System Repect in Nexus Polestar will try it's best to integrate into the user's system. 

_Situration 1: Low Battery_
If the system's battery becomes low, Nexus Polestar will enable it's "Power Saving" state by disabling certain features like blur composition, window transparency, notification sound, animations, and more as these functions aren't entirely nessesary for the software to serve it's purpose.

_Situration 2: Color Scheme and Theme Mode_ (Windows and macOS)
on Windows and macOS, the user can set an accent color for their operating system, Nexus Polestar will try to use the accent color they've set. Along with using the theme mode, which is handy if they use a sunset feature to auto switch between light and dark mode.

[`systemPreferences.getColor(color)`](https://www.electronjs.org/docs/latest/api/system-preferences#systempreferencesgetcolorcolor-windows-macos) (Windows and macOS)

[`systemPreferences.getSystemColor(color)`](https://www.electronjs.org/docs/latest/api/system-preferences#systempreferencesgetsystemcolorcolor-macos) (macOS)

_Situration 3: Motion and Transparency_ (macOS)
On macOS, there is an accessibility option called "Reduced Motion" and "Reduced Transparency".

If "Reduced Motion" is enabled, Nexus Polestar will disable animations.

If "Reduced Transparency" is enabled, all blur compositions and transparency of the window will be disabled. Transparency will also be disabled for other components, if used.

Also recommended by Apple Human Interface Guidlelines for [Accessibility](https://developer.apple.com/design/human-interface-guidelines/foundations/accessibility).

[`systemPreferences.getAnimationSettings()`](https://www.electronjs.org/docs/latest/api/system-preferences#systempreferencesgetanimationsettings) (macOS)

### Why Add Light Mode?

While dark mode is better it causes less eye-strain and great for those with low vision and light sensitivity, light mode does have it's own benefits and probably depends on the user. 

It is ideal for accessibility to allow your users to choose between light and dark modes. Consider people who have cataracts or other vision issues who would like to use your product but are unable to do so in light mode.

So, long short, this is being added for mainly accessibility.

Learn more: https://webuild.io/digital-product-guide-dark-light-modes

### What is Skeleton State
"The concept behind skeleton screens is the use of empty pages that are progressively populated with content as it becomes available — immutable regions of a page are rendered instantly on load, appearing as neutral color blocks, and are gradually replaced with content such as images, headings, and interface labels."

This makes using a splash screen optional.

Example of a Skeleton State:
![](https://miro.medium.com/max/1400/1*18-4pGAP0Pa5040-cJ9aGg.webp)

___

# Working in Nexus Polestar
## Branding
Of course, you can't distribute the software to your customers with a placeholder logo and the name "Nexus Polestar". You'll obviously need to replace it with your company name and logo.

**App Name**
Replace "App Name" with something else like "COMPANY_NAME Desktop". As example, if your company was called BunnyJet, you would name it "BunnyJet Desktop".

You need to `App Name` in the following places: 
```
 - electron
    - index.js
 - build
    - electron-builder.yml
```

Also, in the `electron-builder.yml` file, place update the App ID. As an example, if your company was called BunnyJet and your domain was BunnyJet.net, you would use `net.bunnyjet.bunnyjetdesktop`. Avoid using `-` in the app name as AppX seems to dislike it.

**Logo**
I highly recommend using the template file provided in the `/build` folder as it will help you follow the Apple and GNOME Human Interface Guidelines. The anme of file is `Nexus Polestsar - App Icon.penpot`, it's designed in [Penpot](https://penpot.app).

This template also provides the backgrounds for the DMG installer and the EXE setup. ([macOS Preview](https://i.imgur.com/t1oQFgd.png) / [Windows Preview](https://i.imgur.com/ftiXdoR.png))

![Apple Human Interface Guildlines](https://developer.apple.com/design/human-interface-guidelines/foundations/app-icons/images/app-icon-layout-guides.png)

![GNOME Human Interface Guildlines](https://developer.gnome.org/hig/_images/app-icon-sizes.svg)

## Building
The following is required on your workstation:
 - NodeJS v16.12.0 and up
 - Python 3.10 or up
 - Yarn
 - Visual C++ Redistributable (Windows)
 - Visual Studio (Windows and macOS)
   - Development for C++
 - g++ (Linux)

 > If you're using Windows, please be using Windows 10 or Windows 11. Windows 8.1 or older are not supported by Korbs Studio and Nexus Polestar, older versions may be able to run the application but may run into some issues along the way.

Install Packages:
```
yarn
```

Then, to start the template:
```
yarn start
```

The `yarn start` command will it in development mode, in this mode, Electron will load a URL instead which is `localhost:3000`. This will not be the case in production mode for security purposes.
This URL won't load up right away by Astro, wait a few moments, then press `Ctrl` + `R` in the app.


Build :
```
yarn build
```

The Electron build will use the SH file included(Tested on Linux only) to fix a path issue in Astro. 

___

## Support
If you are having issues with the template, you can either submit an [issue](https://code.korbsstudio.com/KorbsStudio/nexus-polestar/-/issues) or [contact Korbs Studio by email](mailto:support@korbsstudio.com).

> Disclaimer: Korbs Studio does not work for any projects or companies that use this template. So, if you're using a software built on Nexus Polestar, please contact the company or have the company contact Korbs Studio.

___

## Also Check Out:
 - [Electron FAQ](https://www.electronjs.org/docs/latest/faq)
 - [Best Practice - Performance](https://www.electronjs.org/docs/latest/tutorial/performance)
 - [Best Practice - Security](https://www.electronjs.org/docs/latest/tutorial/security)
 - [Why Astro?](https://docs.astro.build/en/concepts/why-astro/)

## Acknowledgements
### Frameworks
 - App built on: [Electron](https://www.electronjs.org) and [Astro](https://astro.build)
 - Styled with: [Sass](https://sass-lang.com/)

### Packages Used
 - Distrubting with: [Electron Builder](https://www.electron.build)
 - For Blur composition effect: [Glasstron Clarity](https://www.npmjs.com/package/glasstron-clarity)
 - For Titlebar Integration: [Electron Titlebar Respect](https://www.npmjs.com/package/electron-titlebar-respect)

### Scripts
 - Navigation: [Tabbed Navigation using Vanilla Javascript](https://codepen.io/alpha1337/pen/mxWBpq)

> It's already been made well clear, Nexus Polestar is inspired by FalixNodes Desktop.