|| Basics • Users || Contributors • Development • Maintainers || Sponsors • Made possible by ||
nteract is first and foremost a dynamic tool to give you flexibility when writing code, exploring data, and authoring text to share insights about the data.
Edit code, write prose, and visualize.
- Share documents understood across the Jupyter ecosystem, all in the comfort of a desktop app.
- Explore new ways of working with compute and playing with data.
We support Jupyter kernels locally on your system and on remote JupyterHubs via Binder.
If you're here to install the nteract desktop app, visit nteract.io to download a binary and install or visit the releases page.
Our current flavor of nteract web runs on top of the jupyter server. Install it with pip
:
pip install nteract_on_jupyter
jupyter serverextension enable nteract_on_jupyter
Now, run jupyter nteract
and you're running nteract on jupyter!
We're still hard at work on the playground. Here's a sneak peek to explore: https://play.nteract.io
For the user guide, please check USER_GUIDE.md
The contributors are listed in the contributors page on GitHub.
To learn how to contribute to nteract, head on over to our contributing guide.
This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to rgbkrk@gmail.com.
Feel free to post issues on GitHub or chat with us in Slack (request an invite) if you need help or have questions. If you have trouble creating an account on Slack, either email rgbkrk@gmail.com or post an issue on GitHub.
This repository is a monorepo, which basically means that the repository hosts more than one module or application. In our case, we have two main directories:
packages/ -- components used as an individual library
applications/ -- all the user facing applications (i.e. desktop, play)
The packages
directory has the components needed to build new applications,
and the applications
has the desktop app, the play app, and a few more.
Why have a monorepo? The monorepo contains many components and packages that can be mixed and remixed to create new applications. The monorepo keeps these elements together so they are easy to discover and use. Another benefit is that the monorepo makes it easy to iterate on applications that share common components. For example, if we update a component, such as the Jupyter message handling, and happen to introduce an issue when making a change to the desktop app and happened to break it for use by play.nteract.io web app we would notice the issue in tandem.
To get started developing, set up the nteract monorepo.
- Fork this repo
- Clone your fork or this repo
git clone https://github.com/nteract/nteract
cd
to the directory where youclone
d ityarn install
To keep up-to-date with changes to the root nteract/nteract branch:
- Set the root as a remote:
git remote add upstream https://github.com/nteract/nteract.git
When changes are made to the root nteract/nteract, they can then be pulled from the root and merged to your master branch:
git pull upstream master
yarn clean
yarn install
In some cases you'll want to modify an individual base package (i.e. commutable
or transforms) and not rebuild all of the other packages. To target a build of a
specific package, use this command, replacing packageName
with the fully qualified name of the package you
want to hack on:
yarn build:only packageName
For example, to hack on the transforms
package, use
yarn build:only @nteract/transforms
yarn app:desktop
As you make changes, you will have to close the entire app (CMD-q on macOS or
CNTL-c at the terminal) and then run yarn app:desktop
again to see the
changes.
In separate terminals run:
yarn build:desktop:watch
and
yarn spawn
This progressive webpack build will keep rebuilding as you modify the source code. When you open a new notebook, you'll get the fresh, up-to-date copy of the notebook app.
console.log
statements in the main Electron process are piped to stdout.
console.log
statements in the Electron renderer process go to the
regular Dev Tools console (accessible from the View menu). Set
ELECTRON_ENABLE_LOGGING=1 to pipe renderer console.log
to the launching
terminal as well. This is useful for debugging crashes and notebook closing
behaviors.
Run:
yarn app:play
Then open 127.0.0.1:3000
in your browser. You'll be able to make changes to
play
and see the changes update live.
If you make changes to any packages/
while hacking on play
, you'll want to
rebuild those using the instructions for building specific packages.
I upgraded my developer installation and things are broken!
- Try
yarn clean && yarn
I want to debug redux actions and state changes.
- Enable redux-logger by
spawning the application with
yarn spawn:debug
.
I keep getting a pop-up asking: Do you want the application "nteract Helper.app" to accept incoming network connections? while developing or using a custom build of nteract on macOS.
-
This is how the the macOS firewall behaves for unsigned apps. On a signed app, the dialog won't show up again after approving it the first time. If you're using a custom build of nteract, run:
sudo codesign --force --deep --sign - /Applications/nteract.app
You will have to do this again every time you rebuild the app.
Allow lerna to publish all of packages/*
$ lerna publish
... follow prompts to publish any packages, choosing the appropriate semver
Follow instructions in Releasing the Desktop application.
Work on the nteract notebook is currently sponsored by
We're on a common mission to build a great notebook experience. Feel free to get in touch if you'd like to help. Resources go towards paying for additional work by seasoned designers and engineers.
The nteract project was made possible with the support of
If your employer allows you to work on nteract during the day and would like recognition, feel free to add them to this "Made possible by" list.
|| Basics • Users || Contributors • Development • Maintainers || Sponsors • Made possible by ||