Pullp is a tool to help you manage pull requests and reviews on your Github repositories, available for Mac and Linux.
An interactive dashboard shows all the open pull requests for your chosen repositories and highlights where your review has been requested. This information syncs with Github every minute!
Want to find out more about the pull requests on a particular repository? Selecting a repository shows a full summary of each pull request, including all of the requested reviewers and submitted reviews. If you need to action anything, a click will take you directly to the pull request in Github.
Pullp is an Electron application built with React.
⚡️ Getting Started
- Download and install the latest release. You'll want the
.dmgfile for MacOS or the
.AppImagefile for Linux
- Open the app
- On MacOS, if your security settings block you from opening the app, right-click it and select Open. You can then click Open on the warning dialogue that opens up.
- Follow the on screen instructions to sign in with Github
- Select the repositories you want to monitor with Pullp (you are able to choose from all the ones that you watch on Github
- Click Monitor to go to the dashboard screen.
- Pullp will refresh the dashboard every minute!
💡Github applies a cost in points to each request Pullp makes for data. Each hour you are permitted to spend 5000 points. By restricting the maximum pull requests to 50, the cost of each request is manageable. This means Pullp can make more frequent requests, giving you a more "near-time" experience. Allowing this maximum limit to be configurable by the user could be a feature in the future.
The amount of pull request data for your selected repositories exceeds Github's maximum limit.
💡Github places a limit on the maximum number of data nodes that can be returned from a single request. This limit may be breached if you have selected a large number of repositories that have many pull requests. The only solution to this currently is to select fewer repositories.
💡Yes! Just use the normal Chrome shortcut to open them, e.g. cmd + opt + i on Mac. React and Redux dev tools are not available in the production app, but are enabled if you are running the app in the dev environment.
💡Make sure you are watching the repository in Github, otherwise it won't appear on the select screen.
🏁 Developer Instructions 🏁
🚀 Running dev environment - The simplest way
npm install, run
npm start to start the webpack dev server. Once running, run
npm run electron-dev to open the app.
React and Apollo dev tools will be available inside the Chrome dev tools.
✅ Running the tests
- To run the tests without the file watcher, run
npm run test:no-watcher
💫 Optional - Running a local oAuth server
Pullp uses an external auth server to complete Github sign in and receive a token for the Github API. You may want to host a local version of this server. Clone it from https://github.com/rkclark/pullp-oauth-gatekeeper, run it on the port of your choosing and then add the server URL to
REACT_APP_OAUTH_GATEKEEPER_URL in the
/env/.env.development file inside of Pullp.
Your oauth server will need set of Github oAuth app credentials. To make these:
- In Github, go to your settings
- Go to Developer Settings, select oAuth Apps (usually selected by default)
- Click New oAuth App
- Give the app a name, this will be seen when/if your app requests access to any organisations that you are a part of. I suggest
- Set the homepage to whatever you like
- The authorization callback URL is not actually used by Pullp, I'd suggest just setting it to
- Click to register the app
- Make a note of the client ID and client secret that you are shown on the next screen
Once you have the credentials, create a new
.env file in the server project root and add them as
Optional - Stubbing Github
The project includes a server that provides stub responses for all external dependencies:
- Github login page
- Github oAuth flow
- Github GraphQl server
To run the stub server run
npm run stub. This will start the server along with the webpack dev server. Then just run
npm run electron-dev in another terminal window.
This can be used if you want to work offline or have finer control over the data being received by the app.
- The GraphQl endpoint is not a real GraphQl implementation! If you change any queries then they will not work without updating the stub endpoint to watch for them.
- To have repos appear on the dashboard, do not select any on the Select screen
- Images are not currently stubbed so will simply not be loaded
🔮 Other developer scripts
npm run serve: Run a server that hosts the production files
npm run react-build: Build the React/CSS production files
npm run style: Run the linter report
npm run style-fix: Fix all auto-fixable lint errors
npm run precommit: Runs the linter and test suite - used by Husky whenever a git commit is created
npm run electron: Runs electron against the built production files,
npm run pack: Packages distributable for the current OS and leaves unpackaged files available for inspection for debugging
npm run dist: Builds the production files and then packages them into a distributable for the current OS
npm run ship: Builds the production files, packages them for the current OS, and then pushes them to a draft Github release on the Pullp repository. For this to work, you must have the relevant access rights on the Pullp repository. In addition, you must create a personal token on Github and add it as
GH_TOKEN=**YOURTOKEN**in a new file
electron-builder.envin the project root. See
electron-builder.example.envfor an example.
npm run install-wsl: Installs linux versions of all packages except for Electron which is installed as the Windows version. For use when developing using Windows Subsystem for Linux (WSL). This is currently the best workaround available.
CI/CD and Releasing
Pullp uses Travis for CI/CD. This is configured so that any branch that is pushed with a name in the format vX.X.X will be automatically packaged for Mac and Linux and uploaded to Github as a draft release.
Any branch name that doesn't match will have the test suite and linter run against it.
- a branch with a name
v1.9.70will be created as a draft release with both the Mac and Linux installation files attached.
- a branch with a name
add-new-featurewill not be created as a draft release, but will be tested and linted.
Once the draft release is on Github it can have release notes added and then be published!