/httptoolkit-desktop

Electron wrapper to build and distribute HTTP Toolkit for the desktop

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

HTTP Toolkit Desktop Travis Build Status Appveyor Build Status

This repo contains the desktop build setup for HTTP Toolkit, a beautiful, cross-platform & open-source HTTP(S) debugging proxy, analyzer & client.

Looking to file bugs, request features or send feedback? File an issue or vote on existing ones at github.com/httptoolkit/feedback.

What is this?

This repo is responsible for building HTTP Toolkit into standalone desktop installers & executables that users can run directly on Windows, Linux & Mac.

HTTP Toolkit consists of two runtime parts: a UI, written as a single-page web application, and a server, written as a node.js CLI application.

This repo builds a single executable that:

  • Includes the latest build of httptoolkit-server
  • When run:
    • Starts the server in the background
    • Opens the UI in an Electron window
    • Kills the server when closed

This means this is mostly Electron configuration & setup, and build configuration for the executable and various installers. It's built using Electron Forge.

This isn't the only way to run HTTP Toolkit! It's the most convenient option for most users, but it's also completely possible to run the server as a standalone tool and open the UI (hosted at https://app.httptoolkit.tech) in any browser you'd like.

Note that the resulting executable doesn't autoupdate (at the moment). Instead both the server (as an oclif app) and the web UI (via service workers) include their own auto-update functionality.

The builds themselves are done on Travis (for Linux & OSX) and Appveyor (for Windows), and tagged master builds are automatically published from there, as github releases.

Contributing

If you want to change the behaviour of the HTTP Toolkit desktop shell (but not its contents), change how it's built, or add a new target platform or format, then you're in the right place 👍.

To get started:

  • Clone this repo.
  • npm install
  • To build & run the electron app locally:
    • npm start - runs the desktop app, downloading the latest live server & using the live UI from app.httptoolkit.tech.
      • This is useful if you're working on just the desktop app, and want to see your changes with the real live environment.
    • npm run start:dev - runs the desktop app, with no built-in server using the UI from localhost:8080
      • This effectively assumes you're bringing your own working UI & server, and is useful for working on this.
      • You can start both from the UI project with just npm start, to work on the UI within the desktop app.
      • Alternatively, you can run npm start in the server project, and npm run start:web in the UI project, to work on the server or both.
  • To build distributable packages:
    • npm run make - this will attempt to build & package the desktop app for your current platform

A few tips:

  • Electron dev behaviour isn't identical to production build behaviour, make sure you check your changes in a real built version.
  • Most distributable build configuration is in electron-forge.config.js
  • To build packages, you may find some platforms complain about that signing certificates are required, you'll probably need to delete keys (e.g. osxSign or certificateFile) to disable that.
  • In CI, pull requests don't receive secret environment variables, so will likely fail. Confirm that that's what's happening, and if so that's ok - the team will manually build & evaluate PR changes to resolve this.