Framework

System Requirements

The minimum requirements your system will need to run Joystick.

Rosetta on M-Series Macs

To make Joystick as universally compatible as possible, some of its database binaries are in an x86_64 format. On a new M-Series Mac, to ensure that Joystick runs smoothly, you'll want to enable support for Rosetta via your Terminal:

Terminal

softwareupdate --install-rosetta

After you've run this, you may need to restart your Terminal (recommended). A common error you will see without installing this is Error: spawn Unknown system error -86.

WSL2 on Windows

In order to use Joystick on Windows, we require that you utilize WSL2 via the Ubuntu 24.04 app available on the Microsoft Store. This will ensure that you gain access to Joystick's full feature set and all of its supported databases without any hiccups. Joystick's database binaries are built against Ubuntu 24.04 and are not currently tested against any other release of Ubuntu.

Must Install Node.js

After you've downloaded and installed Ubuntu 24.04 from the Microsoft Store, open the app and follow the installation instructions on the Node.js Download page for Linux using nvm with npm. Node.js v24.0.0 or greater LTS is recommended.

Node.js

Joystick is a Node.js-based framework and requires you to have Node.js and NPM (Node Package Manager) installed on your computer.

Currently, the recommended minimum version for Joystick is Node.js v20 LTS, though, v21 or greater are recommended.

To install Node.js (and NPM) on your computer, read the official installation instructions.

Import Paths

Joystick's earlier versions depended on the --experimental-specifier-resolution=node flag which was dropped in Node.js v19. This allowed import paths in your code that omitted a trailing index.js file name and excluding the .js extension from file names when importing them (e.g., to import a file at /api/index.js you could do /api or /api/index and Node would resolve the full path automatically).

Because Joystick's current minimum version no longer supports this behavior, for import paths, it's recommended that you type the full, relative path to the file to ensure maximum long-term compatibility with Node.js. Because this is the standard for Node.js moving forward, Joystick will default to aligning with this behavior (as opposed to implementing a polyfill or other hack to re-implement the path resolution).