Web app and desktop app for interacting with PHOEBE 2 (v 2.3+). A running instance of the web app is available at ui.phoebe-project.org, but is connected to a server with limited capabilities due to limited compute resources.
For more information and details, see phoebe-project.org/clients
Choose the appropriate installer or binary archive from the latest release. Note that these are pre-compiled binaries for efficiency, but the source is open and you're welcome to build and package yourself (see the section on development below).
The installer should automatically handle adding phoebe
to your path and create the necessary application shortcuts for your OS.
If you use a binary archive, then you may want to manually create a desktop/launcher shortcut. Additionally, if you would like to use the desktop client alongside the python client, the phoebe
executable needs to be on your system path. This can be done either by editing your system path to include the appropriate directory, or by adding something like the following script to somewhere that is on your path (where the $@
passes all command-line arguments):
#!/bin/bash
/absolute-path-to-phoebe-ui-archive/phoebe $@
If PHOEBE 2.3+ is also installed on your local system, then an instance of phoebe-server
should be launched when you open the desktop client and will automatically connect. If this fails to happen, check to see if phoebe-server
is available on your path and can execute without errors.
The desktop client can also connect to remote instances of phoebe-server
. Please reach out to us if you need assistance installing on a remote machine. We also host an instance of phoebe-server
(with limited capabilities for the sake of finite compute resources). To use a remote machine, click the "+" button at the bottom of the server selection splash screen (if the server is already connected, click on the server name in the lower left corner) and enter the URL/host (i.e. 'localhost:5555' or 'server.phoebe-project.org'). Remote servers allow for additional computation power, but do require a constant and reliable internet connection. Alternatively, you can run phoebe-server
and the client locally, and then export expensive computation and solver jobs to a remote machine whenever necessary.
PHOEBE2-UI is built on the following:
- ReactJS
- Electron
- Setup inspired by electron-with-create-app
- Web-sockets to communicate to phoebe-server
see installing node and npm on Ubuntu
- node
- npm
- phoebe2 (currently needs the latest version of the
fitting
branch installed which requirespip install flask flask-sqlalchemy flask-socketio gevent-websocket "python-socketio[client]"
, once released, PHOEBE 2.3+ will only be required for running the server locally).
while in top-level directory, install all local dependencies into the node_modules
directory (not under version-control):
npm install
npm run dev
will launch the webserver on http://localhost:3000 and open the Electron app. Both will update/refresh when updates are made to the code.
npm run build
(and then copy everything in the build directory to the appropriate directory to serve statically by a webserver)
Dependencies:
wine
,mono-develop
(if using Linux and trying to build for windows)rpm
(if using Debian-based system and trying to create rpm installer)
npm run package
will package PHOEBE2-UI for your system.
npm run package:all
will package PHOEBE2-UI for all systems and also create appropriate archives.
These commands will create a directory for each distribution type in the dist
directory (not under version-control).
NOTE: this can take a long time and generally only needs to be done when preparing to publish a release.
To create installers for all supported distributions (currently includes .deb, .exe, .dmg, .rpm):
npm run package:installer:all
will create installers in the dist/installers
directory (not under version-control) from the latest created package versions (call npm run package:all
first, if necessary). Note that dmg installers can only be built on mac systems. To create all default installers to release, instead run:
npm run package:installer:default
Alternatively, you can call npm run package:installer:deb64
, npm run package:installer:rpm64
, npm run package:installer:dmg
, npm run package:installer:exe32
, npm run package:installer:exe64
separately. See the dependencies section above for possible packages that may need to be installed in order to generate installers.
To include other installers, see the available list here and edit the scripts entry in package.json (make sure to include a link from the package:installer:all entry as well).
-
Most state is held in the App component in App.js (including the server connection) or the Bundle component in bundle.jsx (including information about all parameters, filtering, etc). Flux, Redux, etc are currently overkill for what we need, so this allows all state to be in one place and easily passed down to other components by passing
app
and/orbundle
as properties. -
All Router components in App.js should be wrapped in a Server component to handle parsing the URL and making sure the connection is correct.
-
All electron-only capability is handled in electron-starter.js and exposed via
global.
. These are then available from React components viawindow.require('electron').remote.getGlobal()
.