A story framework for JavaScript