Library of Juggling Browser Extension

Summary

This is a browser extension for Chrome & Firefox which adds new features to LibraryOfJuggling.com. Library of Juggling is a legendary website in the juggling community, however it hasn't been updated in several years. While I've used this site quite a bit in my juggling journey and love it, there was one feature I've always wanted - that I could slow down the GIFs playback speed in a lot of the more complex tricks to help better understand them. I'd never written a browser extension before so figured this would be a fun learning exercise while also being able to give myself the feature I wanted.

Links

Chrome :: Firefox :: GitHub

Technologies

TypeScript / JavaScript, SCSS, Vite

Development

I developed this extension in June 2016. I decided to go vanilla TypeScript / JavaScript for this since it was a relatively small project. I used Vite as a builder. I wrote this by hand ("artisan code", using no agentic AI) over the course of less than 2 weeks in my free time.

Features

GIF Playback

The main feature of this extension is the ability to slow down GIFs on the Library of Juggling website. This is especially useful for more complex tricks where it can be difficult to understand the trick at full speed. In addition to playback speed control, I also added play/pause functionality.

Progress Tracking

The extension also adds a progress tracking feature to the Library of Juggling website. This allows users to track their progress on learning new tricks and see how far along they are in their juggling journey. You can set state from trick details pages and list pages. You can see progress indicators in the site's sidebar. Addtionally, you can filter tricks by progress state on the list pages. You can export/import/reset your progress data from the extension's settings panel.

Dark Mode

I'm a dark mode junkie so I figured I'd add dark mode to the Library of Juggling website as well.

Settings Panel

Enable/disable the entire extension, enable/disable individual features, and export/import/reset your progress data from the extension's settings panel.