{
  "stars": [
    {
      "kind": "pure_markdown",
      "markdown": "# Introduction to Constellate\n\nConstellate is a tool that renders Jupyter notebooks as interactive webapps. That's quite broad: what makes Constellate unique, you may wonder?",
      "star_id": "bFfy3nZv"
    },
    {
      "kind": "pure_markdown",
      "markdown": "## What Is Constellate?\n\nWonderful sites like [The Pudding](https://pudding.cool/) and [Distill](https://distill.pub/) showcase the power of long-form interactive content. Unfortunately, hand-coding these sites using pure Javascript requires enormous time investment, even for skilled web developers. Distill estimated in 2018 that mentoring researchers through the creation process for one of their articles took 20-80 hours.[^1]\n\nThe goal of Constellate is to get 90% of the way to a bespoke piece like one from *Distill* or *The Pudding* without requiring a line of HTML, CSS, or JS. Constellate uses [Jupyter notebooks](https://jupyter.org/), an already ubiquitous format for interactive content that can leverage the mature Python data visualization ecosystem. Constellate will take a notebook and, well, *constellate* it:\n\n - Document structure is inferred by the heading levels, generating an interactive table of contents.\n - All Markdown cells are turned into HTML, with plugins supporting crucial features like $\\LaTeX$ and footnotes.[^2]\n - On the right side of any page, several kinds of content are automatically rendered and included:\n   - Code that generates text output is shown along with the output it generated.\n   - $\\LaTeX$ is rendered and shown as an image: this lets you display a long series of equations without breaking the flow of the document.\n   - Static `matplotlib`/`seaborn` plots are rendered and shown along with the code that created them.\n   - Plotly figures are rendered in the browser in all their interactive glory, just as they show up in the notebook.\n   - Figures from the Holoviz ecosystem (`bokeh`, `panel`, `holoviz`) are also rendered as interactive webapps. They interface with a Python server, so it's possible to use interactive visualizations that depend on specific files or use Python's ecosystem of machine learning tools without any effort translating those to Javascript. What appears in your notebook is what appears in the webapp.\n   - More functionality coming soon!\n\nConstellate produces *constellations*, which can easily deployed to a URL and accessed by anyone.\n\n[^1]: https://distill.pub/2018/editorial-update/#review-process\n\n[^2]: You already saw one of those, but here's another!",
      "star_id": "Ua2zo8nJ"
    },
    {
      "kind": "pure_markdown",
      "markdown": "## Why Constellate? Why Not Something Else?\n\nConstellate has a specific set of goals in mind that differentiate it from other tools doing similar things. Your goals may not be those of Constellate, so it's worth seeing if your needs might be better met by an alternative.",
      "star_id": "sGslIhRA8"
    },
    {
      "kind": "pure_markdown",
      "markdown": "### Constellate Puts the Content First\n\nConstellations put the content first, not the code. If the code is your focus (for instance, you're writing educational content about Python programming), you should consider using a frontend like [Binder](https://mybinder.org/) or [Google Colab](https://colab.research.google.com). Those tools have a Python kernel attached to them so readers can edit the code and run it themselves, and it shows the code by default instead of hiding it behind a tab like Constellate does.",
      "star_id": "3K4NhKPu"
    },
    {
      "kind": "pure_markdown",
      "markdown": "### Constellate Abstracts Web Development Details Away\n\nConstellate does not require you to write a single line of HTML, CSS, or Javascript. This necessarily means that you're sacrificing some control over the final output. If web development is your jam, or you have specific needs for bespoke interactivity, you'd be better off making a custom site. Tools like [D3](https://d3js.org/), [Idyll](https://idyll-lang.org/docs) and [Scrollama](https://github.com/russellgoldenberg/scrollama) can do things that Constellate can't, if you're willing to put in the time to make it so.",
      "star_id": "Do5lKrWO"
    },
    {
      "kind": "pure_markdown",
      "markdown": "### Constellate Targets a Wide Audience\n\nA major design goal of Constellate is that non-technical readers find Constellations aesthetically appealing and approachable. They're easy to deploy to a public URL and share just like any other website. Ideally, a reader might not even be aware that the site was generated instead of written by hand! (It'll be our little secret.)\n\nIf you're writing for an audience that finds Jupyter notebooks comfortable, as mentioned above [Binder](https://mybinder.org/) or [Google Colab](https://colab.research.google.com) will serve your needs more easily.",
      "star_id": "SEpYsxslS"
    },
    {
      "kind": "pure_markdown",
      "markdown": "### Constellate Preserves Interactivity\n\nConstellations let you easily share interactive visuals and content. If your content is entirely Markdown or code, Constellate will still serve your needs, but using notebook exporters or static site generators like [Nikola](https://getnikola.com/) or [Jekyll](https://jekyllrb.com/) might be better alternatives. Additionally, [Jupyter Book](https://jupyterbook.org/en/stable/intro.html) has similar aesthetic goals as Constellate and might be a more natural fit for your content.",
      "star_id": "DtFyslplO9"
    },
    {
      "kind": "pure_markdown",
      "markdown": "### Constellate Makes Sharing Easy\n\nYour readers probably don't want to download a notebook or set up a Python environment. Constellate makes it easy to host websites, and if you aren't using Python servers to power visuals those websites are static and can be hosted for free.\n\nIf you're trying to demo a notebook or present, and you don't need a URL, there are alternatives to Constellate like [RISE](https://github.com/damianavila/RISE) that are pretty cool and worth checking out.",
      "star_id": "xhPZOnT3"
    },
    {
      "kind": "pure_markdown",
      "markdown": "### Constellate Prioritizes Ease of Use\n\nIf you're writing a data journalism piece or sharing an interactive explanation of an algorithm, you probably want to focus on your content and not web development. Constellate prioritizes plug-and-play usability: using it to render a notebook that was not made with Constellate in mind shouldn't require more than a couple edits. \n\n[Plotly Dash](https://plotly.com/dash/), [the Holoviz ecosystem](https://holoviz.org/), and many other tools give you full control over how the output visuals are rendered, and using a server architecture combined with JS gives you even more control. Constellate strives to make its output as customizable as possible, but never in a way that forces you to use JS or requires a complex file structure.",
      "star_id": "blpKVsMQ"
    }
  ],
  "breadcrumbs": [
    [],
    [
      0
    ],
    [
      0
    ],
    [
      0,
      2
    ],
    [
      0,
      2
    ],
    [
      0,
      2
    ],
    [
      0,
      2
    ],
    [
      0,
      2
    ],
    [
      0,
      2
    ]
  ],
  "title": "Introduction to Constellate",
  "slug": "introduction-to-constellate",
  "star_titles": [
    "Introduction to Constellate",
    "What Is Constellate?",
    "Why Constellate? Why Not Something Else?",
    "Constellate Puts the Content First",
    "Constellate Abstracts Web Development Details Away",
    "Constellate Targets a Wide Audience",
    "Constellate Preserves Interactivity",
    "Constellate Makes Sharing Easy",
    "Constellate Prioritizes Ease of Use"
  ]
}