Skip to content

maddestlabs/storie

Repository files navigation

S|torie

The abominal little engine that probably shouldn't. Build stuff using Markdown with executable JS code blocks. Fast prototyping on the web with easy export to native with Tauri.

Check it out: Intro

Demos:

Core examples:

The engine is built around GitHub features. No installation needed. Just create a new repo from the S|torie template, update index.md with your own content and it'll auto-compile for the web. Enable GitHub Pages and you'll see that content served live within moments. GitHub Actions take care of the full compilation process.

Compilation

Storie's long-term direction is scripting-first development with a native compilation path that can eventually target a Storie-oriented operating system.

The current roadmap is documented in COMPILATION_ROADMAP.md.

An initial compiler scaffold is now available:

npm run compile:app -- docs/demos/klondike.md generated/klondike --target web

This currently emits a compile scaffold with a manifest, content summary, and extracted lifecycle behavior blocks. It is the front end for the larger compiler pipeline, not the final runnable backend yet.

Features

  • Able to empower a robust audio/node graph (WebAudio)
  • Supports fragment shaders for GPU-powered visual FX (WebGPU)
  • Supports compute shaders for GPU-powered calculations (WebGPU)
  • Cross-platform (Web + Tauri/WGPU for native)
  • Under 1MB file size on the web

We want to provide for creation of apps and games that require nothing external. So the engine needs to provide primitives for drawing, creating sound, generating procedural content, etc.

Getting Started

Quick Start:

  • Create a gist using Markdown and JS code blocks
  • See your gist running live: https://maddestlabs.github.io/storie?content=gist:gistid

Create your own project:

  • Create a project from S|torie template and enable GitHub Pages
  • Update index.md with your content and commit the change
  • See your content running live in moments

Web Usage

Quick Start with Content Parameter:

# Load from GitHub Gist
https://maddestlabs.github.io/storie?content=gist:abc123

# Load a local demo
https://maddestlabs.github.io/storie?content=demo:clock

# Load from browser localStorage (drafts, offline work)
https://maddestlabs.github.io/storie?content=browser:my-draft

Content Sources:

  • gist:<ID> - Load from GitHub Gist
  • demo:<name> - Load from local demos folder
  • file:<path> - Load from file path

Video Export

Video export uses browser tech to render at any resolution and frame rate but it requires file system access for feasible storage so it only works when hosted locally or via GitHub Codespaces. Just clone the repo and serve /docs/index.html with any basic web server. Then access Export panel with CTRL-SHIFT-E.

SVG → Worlds (Inkscape)

If you prototype card/slide layouts in Inkscape, you can convert SVG text objects into a Worlds-ready Markdown document:

node scripts/svg-to-worlds-md.js docs/demos/demo.svg

This writes docs/demos/import-demo.md by default, using docs/demos/worlds-import.md as the template.

Options:

  • --flip-y 1 (default): flips SVG’s Y-down coordinates into Worlds’ Y-up coordinates and keeps rotations consistent.
  • --anchor baseline-left (default): treats SVG <text x y> as a baseline-left anchor and shifts it to an estimated text center (helps with rotated text).
  • --anchor point: uses the raw transformed SVG x/y point with no anchor correction.
  • --scale <n>: multiplies all imported coordinates.
  • --center 1: centers imported sections around the origin.
  • --template <path>: use a different template file (insert marker: <!-- SVG_TO_WORLDS_SECTIONS -->).
  • --stdout: write the output to stdout.

History

  • Successor to Storiel, the Lua-based proof-of-concept.
  • Rebuilt from Backstorie, a template that extends concepts from Storiel, providing a more robust foundation for further projects.
  • Forked from Storie, which was originally just a terminal engine but this branch now continues with terminal functionality while the Storie fork is now a comprehensive game and media engine.

Development & AI Disclosure

AI assistance has been used extensively throughout every part of this project's development, including the separate repositories that paved way to the engine's current state. However, the core concepts behind S|torie have been in development for over 9 years, with foundational precedents established in prior projects such as Treverse from before the advent of modern AI tooling.

AI assistance is just that, assistance. It's a tool to quickly meet a vision that starts with the simplicity of scripting in the browser that can eventually be ported down to native.

About

Build stuff using Markdown with executable JavaScript code blocks exposing WebGPU and WebAudio.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Generated from maddestlabs/backstorie