wolfram-js-frontend
wolfram-js-frontend copied to clipboard
Dynamic Notebook Environment for Wolfram Language written in Javascript
Dynamic Notebook Environment for Wolfram Language
Made for scientists by scientists ⚗️
written with love using freeware Wolfram Engine, JavaScript and WLX
Recommended Wolfram Engine: 13.3 or higher
Special thanks to our co-developer @KirillBelovTest (Wolfram Language Web Server developer)
To help maintain this project ❤️
Any amount (one-time or monthly) is appreciated, and your profile will be permanently displayed on this page. Thank you for helping us!
🔗 Link Notebooks posted as static web pages showcase various examples that demonstrate how to use the Wolfram Language and the dynamic features of our frontend.
Contributing
See here
Media
- YTS 📽️ You don't need to program your figures manually
- YTS 📽️ How to do Dynamics in Computation Notebook
- YTS 📽️ We made AI Copilot in your Notebook 🤖
- YTS 📽️ AI Copilot in your Notebook. Part 2 🤖
Publications 📢
- Medium May 2024: Reinventing dynamic and portable notebooks with Javascript and Wolfram Language
- Yandex Open Source Jam April 2024: Dynamic notebook interface + Wolfram Language (Russian language only)
- DPG2024 Berlin March 2024: Computational Notebook as a Modern Multitool for Scientists, Slides
- Habrahabr October 2023 Open-source блокнот Wolfram Language или как воссоздать минимальное ядро Mathematica на Javascript и не только (Russian language only)
- Habrahabr October 2023 Wolfram Language JavaScript Frontend (Russian language only)
Highlights
Not a typical Jupyter-like notebook environment 🧨
It supports dynamics, GUI building blocks, and powerful Mathematica syntax out of the box.
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.
Command Palette and GUI-in-Code Emulation 🎨
Native Math Input in the Code Editor 🧮
Write beautiful equations between lines of normal Wolfram Language expressions.
There is no need to lift your fingers from the keyboard 🎹
Shortcuts
-
Alt+2
,Cmd+2
hide/show input cell -
Ctrl+/
make fraction on selected -
Ctrl+6
make superscript on selected -
Ctrl+2
make square root on selected -
Ctrl+-
make subscript on selected
Or use toolboxes for complex structures such as integrals, sum, Greek letters
Inline Dynamic Tool for Tuning 2D/3D Positions
Compress to HTML / Markdown 🗜️
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
Later, once opened using WLJS Notebook application, it is unpacked back to a normal editable format.
AI Assistant 🤖
We deeply integrated ChatGPT, so that AI can have a read/write acccess to your notebook
Data-Driven Slides 🛝
Make a presentation right from the notebook.
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.
Sponsors (one-time or monthly) ☺️
- Jon L. Woodard, USA
- @MitsuhaMiyamizu, Mars
Installation 🛠️
The freeware Wolfram Engine is required (Version 13.3 is preferable). Activation can be done later using WLJS Notebook App.
On macOS, if you have Homebrew installed, you can install it through Homebrew Cask:
brew install --cask wolfram-engine
a side note for Linux users If you face any issues, try to install avahi daemon.
Desktop App ✨
Download from the releases section.
Again, if you have Homebrew installed, you can install this app using:
brew install --cask wljs-notebook
Docker Container
contributed by @yloose
See here
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
Extra arguments
- set the home folder (overrides settings)
wolframscript -f Scripts/start.wls folder "Demos"
- disable autolaunch of the evaluation kernel
wolframscript -f Scripts/start.wls noautolaunch True
- disable autotest
wolframscript -f Scripts/start.wls bypasstest True
A side note for servers with no desktop interface
You might need to install the following (for Image
and some other graphics to work properly) libraries.
Shortcuts 🎬
working in both: browser and desktop application
UI
-
Ctrl+S
,Cmd+S
save notebook -
Alt+.
,Cmd+.
abort evaluation -
Ctrl+P
,Cmd+P
open command palette -
Shift+Enter
evaluate current cell
Cells
-
Alt+2
,Cmd+2
hide/show input cell -
Ctrl+/
make fraction on selected -
Ctrl+6
make superscript on selected -
Ctrl+2
make square root on selected -
Ctrl+-
make subscript on selected
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.
Technology Stack
Wolfram Language, JavaScript
Inspired By
- Wolfram Mathematica
- Jupyter Notebook
- Observable
- Wolfram Language Notebook VSCode
- Mathics
License
GNU GPLv3