Skip to content

JerryI/wolfram-js-frontend

Repository files navigation

Open-source Notebook Interface for Wolfram Language

Cover-compressed

Made for scientists by scientists

Written for the freeware Wolfram Engine using JavaScript and WLX

Documentation & Tutorials

Telegram support chat

Recommended Wolfram Engine: 13.3 or higher

Special thanks to @KirillBelovTest (Wolfram Language HTTP Stack developer)

To help maintain this project:

Highlights

Not a typical Jupyter-like notebook environment

It supports dynamics, GUI building blocks, and powerful Mathematica syntax out of the box.

alt text

alt text

No more static graphics! Each primitive of Graphics/Graphics3D was recreated from scratch using d3.js and THREE.js libraries. Most native plotting functions of Mathematica are supported.

AI Assistant

We deeply integrated ChatGPT, so that AI can have a read/write acccess to your notebook

AAI

Command Palette and GUI-in-Code Emulation

Inline Dynamic Tool for Tuning 2D/3D Positions

ezgif com-optipng

Native Math Input in the Code Editor

Write beautiful equations between lines of normal Wolfram Language expressions.

Mathinput-ezgif com-optipng

Compress to HTML

An entire notebook can be exported to a standalone .html file keeping all data inside. No internet dependency, no additional software is required for viewing a notebook

HTML-ezgif com-optipng

Later, once opened using WLJS Notebook application, it is unpacked back to a normal editable format.

Data-Driven Slides

Make a presentation right from the notebook.

slides

Real-Time Interactivity

Follows the mouse pointer and performs complex calculations.

Many More

Autocomplete

JavaScript Cells and Integration with WL

HTML Cells

Markdown Cells

Mermaid Diagrams

Offline documentation 🩺

WLJS Notebook runs locally and belongs to you (no cloud-based stuff involved). No internet connection is needed.

Motivation

The idea is to implement a minimalistic but easily extendable open-source notebook interface with syntax sugar, interactive objects for the freeware Wolfram Engine.

There is no aim to fully copy Mathematica (it will never be possible), however, there are a few things that can be improved:

  • Stability and speed
  • Independence from WRI
  • Portability (not PDF) - easy to share your work with someone outside the ecosystem keeping your graphics interactive or embedded on a website
  • Event-based approach to dynamics - allow users to build complex dynamic notebooks and to have clear control over all moving parts
  • Natural bridge between other languages - HTML as markup, WL for computations, and JS for stunning visuals

Installation

The freeware Wolfram Engine is required (Version 13.3 or higher is recommended).

On macOS, if you have Homebrew installed, you can install it through Homebrew Cask:

brew install --cask wolfram-engine

Desktop App

Download it from the releases section.

Again, if you have Homebrew installed, you can install this app using:

brew install --cask wljs-notebook

Standalone Server

Clone this repository and run:

wolframscript -f Scripts/start.wls

or on a specific hostname

wolframscript -f Scripts/start.wls host 0.0.0.0 http 8080 ws 8081 ws2 8082 docs 8085

that will open an HTTP server on 8080 port with 8081, 8082 used for realtime communication and docs pages at 8085

Package System

The frontend uses its own package/plugin system. It doesn't require any software installed except wolframscript. Precompiled plugins are downloaded using URLFetch from GitHub repositories and imported to the system.

Sponsors

@MitsuhaMiyamizu 🤍

Technology Stack

Wolfram Language, JavaScript

Inspired By

  • Wolfram Mathematica
  • Jupyter Notebook
  • Observable
  • Wolfram Language Notebook VSCode
  • Mathics

License

GNU GPLv3