A lightweight Electron update server for all your applications that proxies downloads from GitHub releases.
- 📦 Multiple application support
- 🚀 Proxy downloads from GitHub releases
- 🔒 Support for private repositories
- 🔄 Automatic platform detection
- 🔍 Simple configuration
# clone the repository
git clone https://github.com/iamtraction/quark.git
cd quark
# install dependencies
npm install
# build quark
npm run build
# copy example config
cp .env.example .env
cp config.example.yaml config.yaml- Edit
config.yamland configure your Electron applications. - Edit
.envfile and set the environment variables you need.
PORT: Server port (default: 3000)HOST: Server host (default: 0.0.0.0)URL: URL where this server is deployedGITHUB_TOKEN: GitHub PAT to proxy downloads from private GitHub repositoriesCONFIG_PATH: Path to config file (default: ./config.yaml)LOG_LEVEL: See logs less than or equal to this severity (default: info)
# start the server
npm startGet an overview of the application. It also lists all the available release assets for the latest version.
GET /:application
Download the latest version of the application. Automatically detects the platform from the user agent.
GET /:application/download
| Query Param | Description | Example |
|---|---|---|
format |
The extension of format you want to download | dmg, pkg, zip, etc. |
Download the latest version of the application for the specified platform.
I recommend using either process.platform or os.platform() to retrieve the platform.
GET /:application/download/:platform
| Query Param | Description | Example |
|---|---|---|
format |
The extension of format you want to download | dmg, pkg, zip, etc. |
Check whether an update is available for the specified platform.
If an update isn't available it'll return the 204: No Content status.
GET /:application/update/:platform/:version
This endpoint serves a cached RELEASES file required by Squirrel.Windows (the auto-update system used by Electron applications). The file contains a download link to the .nupkg package that contains the application update.
GET /:application/:version/RELEASES
# install dependencies
npm install
# run linter
npm run lint
# build quark
npm run build
# start development server
npm run watch- Fork the repository
- Create your feature branch (
git checkout -b feat/magic) - Commit your changes (
git commit -m "feat: add some magic") - Push to the branch (
git push origin feat/magic) - Open a Pull Request