Skip to content

Paradise-Pi/ParadisePi

Repository files navigation

ParadisePi

Test Build GitHub repo size GitHub release (latest by date)

Logo

A facility control panel for sACN & OSC, in Electron.

Made up of an electron app, with a websocket server serving an admin interface

Read about it on the website

Stack

Installation

Pre-built packages are provided for Windows, MacOS (Intel) and Linux at the Latest Release


Developing

Docs

The Paradise website is hosted on Cloudflare Pages, and is built using Docusaurus. The source is in the /docs directory.

Running locally

For the OSC library windows build tools are needed. See the instructions here: https://github.com/nodejs/node-gyp#on-windows

npm install
npm start

To restart the app (hot reloading doesn't work for the preload process itself, only the rendered output) type rs into the command line opened by the start command. Hot reloading also doesn't work for the main process, you need to restart it fully.

You can access the rendered output of the app in a browser as well (if helpful) by visiting http://localhost:9001/main_window/#/main/help. This doesn't work in production builds.

Building Releases

npm run make

Releasing

Releases are automatically generated whenever a tag is pushed to the main branch. You can them check them over and publish them.

Architecture

flowchart TB
    subgraph ElectronProcess ["Electron Main Process (node.js)"]
    db[(Database)]-->repo([Database Repository])-->rt[Router]
    rt-->repo-->db
    models([Database Models])-->repo
    rt-->osc{{OSC Output}} & e131{{"sACN (E1.31) Output"}} & http{{"HTTP Output"}}
    samp{{sACN Sampler}}-->repo
    end
    subgraph Clients ["Clients"]
      subgraph ElectronWindow ["Electron Window"]
      react1(React)-.->rd1 & apiCall1
      rd1(Redux) & apiCall1(Api Call Function)-->wrap1{API Wrapper}
      end
   
      subgraph BrowserWindow ["Browser Window (e.g. over Wifi)"]
      react2(React)-.->rd2 & apiCall2
      rd2(Redux) & apiCall2(Api Call Function)-->wrap2{API Wrapper}
      end
    end
    
      wrap2-->socket>Socket.io]-->rt
      socket-- Callback -->wrap2
      repo-->socket-- Push -->rd2

      wrap1-->ipc>IPC Channel]-->rt
      ipc-- Callback -->wrap1
      repo-->ipc-- Push -->rd1
      
    ElectronProcess --> ElectronWindow
    ElectronProcess --> ws>Webserver] --> BrowserWindow

Licence

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or 
any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.