Install via GitHub
Install ReviewNB on any of your GitHub Repositories
See Notebook Diff for any Commit or Pull Request
Styling is Same as Jupyter IDE
Markdown, Code, and Output rendered as seen in Jupyter
Commenting (Coming Soon!)
Cell Level Comments to Collaborate with your Team
I'm Amit Rathi, entrepreneur/developer who likes building dev tools. More about me here.
I came across Jupyter's version control problem while building nurtch. Talking to Jupyter users convinced me that it's a widespread problem & one worth solving. Besides, diff algorithms are fun to write :)
We're building in the open. That means you can view upcoming features, vote on them, and even request a new one.
Does ReviewNB work with GitLab or BitBucket?
- Not yet. Additional platform support is one of our most requested feature. Feel free to upvote/follow updates.
Can we self host ReviewNB?
- Yes. If you're interested in on-prem installation, please fill this form and we'll get in touch.
Which repositories can ReviewNB access?
- We can only access repositories for which you have enabled ReviewNB on GitHub
- You can enable/disable individual repository access at any time from GitHub
How can I trust ReviewNB with my private Notebooks?
- ReviewNB does NOT store any repository contents. Notebooks / Diffs / Comments / Commits / PRs, NONE of these are stored in ReviewNB
- Anytime you open a diff, we make API calls to GitHub to fetch the data. We process the diff and serve it to your browser in real time
- Even if you just refresh the page, we make all the API calls again. NO storing of repository contents in any form (not even caching)
What GitHub permissions do you need?
- Read repository contents to fetch notebooks and compute diff
- Read repository metadata to fetch list of commits and PRs
- Read-Write access to pull requests to read & write PR comments
What about GitHub access token security?
- GitHub access tokens are stored with AES (Advanced Encryption Standard) encryption
- Every time you logout and login, we generate a new GitHub access token. That way, your tokens are automatically rotated and the old one becomes defunct