Digital Marbles

It's great fun to build a site from scratch.

In this case I wanted to play with animation and physics, and create a billboard from bouncing marbles.

To try it out, visit, add your own billboard message, then click Animate.

How was it built?

Vanilla JavaScript using ES6 and ES7 (async/await).

To minimize build tool complexity, I like Parcel and its near zero configuration. This way I can use the latest JavaScript, pull my ES6 modules together, run them through Babel for cross-browser compatibility, and finally generate a nice minified distribution. It even supports hot reloading. Parcel (1.10+) now supports Babel 7.

For testing, I've been using Jest.

I originally thought I'd pull an off-the-shelf JavaScript physics engine to use, but it was more than this project needed (and didn't quite work correctly stacking marbles) so I created my own marble-bouncing-and-stacking engine.