Smartdown is a declarative, literate and reactive authoring technology for writing technical and non-technical documents that are compelling and easy to share and publish within many existing forums and blogging systems. Smartdown is designed for blogging, technical communication, and teaching. Smartdown simplifies the creation of Explorable Explanations, which are prose documents with embedded interactive content such as charts, graphs, and featherweight programs called playables.
Smartdown extends the simple expressivity of the Markdown language commonly used on blogs, messaging systems, technical forums, and on GitHub. The Smartdown engine is a Javascript library that interprets the content in these Smartdown source files and enacts the desired behavior and presentation.
Use the navigation buttons below to explore different aspects of Smartdown. You can always go Back to Home.
Media | Data/Science | Toys | Advanced |
---|---|---|---|
Readme | Graphviz | MadLibs | Typescript |
Markdown | D3 | Cuneiform | Javascript |
Math | Data | Mobius | Gists |
Images | Plotly | Temperature | Extensions |
Multicards | Maps | Vector Field | Brython |
Video | Stdlib | Tree | YouTube |
GIF/Audio | Processes | Conic | ES6 |
Decorations | ThreeJS | VectorTree | Mandelbrot |
Cells | P5JS | Dungeon | LDF |
Disclosables | Mermaid | Dungeon3D | OpenJSCAD |
SVG | jsPsych | Music | Inlines |
Disclosables++ | Sankey | WordCloud | Kiosk |
Swatch | Astronomy (WIP) | Crossword | |
Tweets | GraphvizClickable | JSXGraph | Filament |
- GitHub-flavored Markdown to make it easy to write simple and complex prose and documentation.
- MathJax including Latex and AsciiMath syntax, chemical notation via
mhchem
- Code fragment syntax highlighting via highlight.js.
- Media embedding support including Images, Tweets, SVG, Video, GIF.
Smartdown is unique in the way that it integrates text with interactive cells, variables and playables. This enables the development of lightweight interactive documents that have the power and expressivity of a web application, but are more easily authored and published. Although Smartdown was designed for instructional and explanatory purposes, its power and expressivity rivals or surpasses that of Jupyter Notebooks, making it suitable for data science exploration and presentation.
Unique features of Smartdown include:
- Reactive cells similar to those in a spreadsheet, but inlined with Smartdown prose. These cells can be use for input, output, calculation, navigation, and for interacting with internet APIs such as Wikidata.
- A simple, but expressive reactive process model that integrates Smartdown cells with Smartdown playables.
- The ability to structure a Smartdown document as a set of cards which can be hyperlinked to provide guided navigation.
- A rich and extensible set of playables, which are similar to the embeddables found in many blogging systems, but can interact with each other and the document itself. The current default set of playables includes:
- P5JS supports drawing-based visualizations, games, sound and much more.
- D3.js, D3fc, Plotly.js, and threejs support data visualizations including plots, charts, maps, and much more.
- Leaflet.js enables easy embedding of geo-based data and maps.
- Graphviz via
viz.js
is a long-lived standard format for technical and scientific diagrams. - Custom Javascript Playables simplify integration and enhance expressivity of the document.
- (coming soon) Go playables provide a typed language and a rich set of concurrency and communication capabilities.