Working With GitHub

Nextjournal makes it easy to work with private and public code repositories and data stores. This article will focus on the platform's GitHub integration.

1. Add and Mount the Repository

Click on Add new content or use the ➕ insert menu and select Import GitHub Repository. The widget will ask for the repository name, which consists solely of the hosting account and the repository name. In this case the account is nextjournal and the repository is repository-demo thus the Repository Name field reads nextjournal/repository-demo. You can also specify the branch or the specific commit SHA.

Under the Runtime Menu, expand Mounts and then press Add mount. Select the repository's name under Source and the Destination field will be filled with a default.

The repository defaults to a directory off root. In this case, it's /repository-demo:

ls -lah /repository-demo

2. Load Data From the Repository

Load the tidyverse collection of R packages, which includes two dependencies used in this article, ggplot2 and readr, and then read in data from the mounted GitHub repository.


artists <- read_csv("/repository-demo/artist_data.csv")

3. Working With the Repository

3.1. Version Control and References

Copying the file into content addressed storage at /results from the GitHub repository means the information is automatically version controlled and referenceable.

cp /repository-demo/artist_data.csv /results

References are powerful and convenient. There are two ways to use them:

  • Copy the file above and paste in the code cell below. This is done by hovering the mouse cursor to the left of the filename and exposing the copy menu.
  • Insert the reference by typing the @ symbol in a code cell and select Reference. Choose artist_data.csv in the subsequent menu.
  • Insert the reference by typing the @ symbol in a code cell and select Reference. Choose artist_data.csv in the subsequent menu.
artists <- read_csv(

3.2. Working With Code

Say the repository has some code you would like to run:

cat /repository-demo/birth-distribution.r

One option is to run the code from within the language. This method will vary from language to language.

source('/repository-demo/birth-distribution.r', local = F, echo = T)
list(data = list(born = c(....

Another option is to cut the code from the cat command above and paste it into the language's code cell.

artists <- read_csv("/repository-demo/artist_data.csv")
born <- artists$yearOfBirth
df <- data.frame(born)

ggplot(df, mapping=aes(x = born, y = as.numeric(row.names(df)))) + 
           geom_point(size=2.2, alpha=0.4, shape=15) + 
           labs(x = "Year", y=element_blank(),
                title = "Distribution of Artist's Birth Years at the Tate", 
                subtitle = "From the Museum's Permanent Collection") + 
           theme_bw() +
           theme(axis.text.y = element_blank(),
                 axis.ticks.y = element_blank(),
list(born = c(1930, 1852, ....