Skip to content

httptoolkit/httptoolkit-ui

Repository files navigation

HTTP Toolkit UI Build Status

This repo contains the UI 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/httptoolkit.

What is this?

HTTP Toolkit is built as a single-page web application (this repo), running on top of a server that provides access to non-web functionality (e.g. running a proxy server), typically run through an electron desktop wrapper app. The core UI and the majority of HTTP Toolkit functionality all lives here, except for desktop-app specific behaviour & build configuration, or functionality that can't be implemented in a web app.

The UI is built as a TypeScript React app, using MobX for state and Styled Components for styling, with Mockttp used to manage the HTTP interception itself.

When running, the UI is typically used via app.httptoolkit.tech, even in the desktop app (it's not embedded there, but hosted standalone). It can either be used through the desktop app (which starts its own server), or users can start their own server and open the UI in a browser directly.

Contributing

If you want to change the behaviour of the HTTP Toolkit in almost any way, except the low-level HTTP handling (see Mockttp), how interceptors start applications (see httptoolkit-server) or how it's packaged and distributed (see httptoolkit-desktop), then you're in the right place 👍.

To get started:

  • Clone this repo.
  • npm install
    • On an arm64 Mac, you may see a Puppeteer error saying "The chromium binary is not available for arm64". See puppeteer/puppeteer#6622 for more details. As a quick fix you can run export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true and then re-run npm install (you may need to delete node_modules first). In this case, the integration tests won't work but that's rarely important for local development.
  • For pure UI development
    • Run npm start to start the UI along with a backing httptoolkit server.
      • On an arm64 Mac, this may not work. You can run the server in development mode locally though (jump to the next section).
    • Open localhost:8080 to view the UI.
  • To develop the UI & server together
    • Start a server locally
    • Run npm run start:web to start the UI without running a separate HTTP Toolkit server
    • Open localhost:8080 to view the UI
  • npm test - run the tests