Pullp
Pullp is a tool to help you manage pull requests and reviews on your Github repositories, available for Mac, Linux and Windows.
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! To help you keep track of things, Pullp has configurable desktop notifications to keep you in the loop.
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.
You are also shown the five most recently closed pull requests:
Want to change the way that Pullp notifies you of changes? On the settings screen you can toggle a number of different options:
Pullp is an Electron application built with React.
⚡ Getting Started
- Download and install the latest release. You'll want the
.dmg
file for MacOS or the.AppImage
file 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!
❔ FAQs
💡 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
After npm install
, run npm start
to start the webpack dev server and electron app.
React and Apollo dev tools will be available inside the Chrome dev tools.
✅ Running the tests
- Run
npm test
. - 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.
If you are connecting to a different GitHub domain than github.com
, you can set REACT_APP_GITHUB_DOMAIN
to that domain such as github.mycompany.com
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
pullp
! - Set the homepage to whatever you like
- The authorization callback URL is not actually used by Pullp, I'd suggest just setting it to
http://localhost:3001/auth/github/callback
- 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
OAUTH_CLIENT_ID=xxx
OAUTH_CLIENT_SECRET=xxx
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:start: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.
Limitations:
- 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 filesnpm run react:build
: Build the React/CSS production filesnpm run style
: Run the linter reportnpm run style-fix
: Fix all auto-fixable lint errorsnpm run precommit
: Runs the linter and test suite - used by Husky whenever a git commit is creatednpm 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 debuggingnpm run dist
: Builds the production files and then packages them into a distributable for the current OSnpm 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 asGH_TOKEN=**YOURTOKEN**
in a new fileelectron-builder.env
in the project root. Seeelectron-builder.example.env
for 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 Github Actions 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.
e.g.
- a branch with a name
v1.9.70
will be created as a draft release with the Windows, Mac and Linux installation files attached.
Once the draft release is on Github it can have release notes added and then be published!