npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

svgslides

v0.0.3

Published

Slide crafting utility for nerds.

Downloads

7

Readme

SVG Slides

Slide crafting utility for nerds.

Draw your slides in a vector editor and export SVG. By annotating the SVG, you can build slide transitions with

  • Incremental builds
  • Magic-move / morph with precise slide-to-slide matching by object ID.
  • Fade-in and out.
  • Custom external web content like videos or interactive widgets.

Note: Expect this to be more work than Powerpoint or Keynote, but more rewarding :)

Prerequisites

  • Install Python 3
  • pip install -r requirements.txt
  • Install Node.js with NPM.
  • We use Parcel for building the project. (npm install -g parcel-bundler)

Process

  • Fork this repo (optional, allows customization)

  • Draw your slides (of size 1280x720) in your favourite vector editor I use Sketch on Mac. Cross-platform, Figma seems to work well. For Figma, make sure to enable 'include "id" attribute' in SVG export settings.

  • Annotate your SVG IDs with attributes to set animation behavior, e.g. myPath[stage=2][fade-in] or rectangle[move][otherattrib=value] Looks like this in Sketch:

  • Run ./preprocess_slides.py demo-data/ -m demo-data/dist -o demo-data/slides.json to pre-process your SVGs (parse these annotated ids) and turn them into one big JSON file. This also strips out embedded images and puts them in dist/media/.

  • You can customize the presenter notes in demo-data/notes.md. You can find the right numbers to link notes with slides in the cockpit (press C to open)

  • Run parcel index.html in demo-data/ to serve your slides in dev-mode.

  • The entry-point for the code is demo-data/index.js.

Sketch live view

If you are using Sketch, we provide a watcher script to automatically extract the SVG and build the slides.json file everytime you save the Sketch file. You need to name your Sketch file slides.sketch and give the containing directory as argument:

./sketch-generate.sh demo-data/

Step-wise appearance of nodes

  • Use tags like [stage=1] or [stage=3-5] in your IDs.

Entry animation

  • mynode[fade-in]
  • mynode[fade-in=2] --- fade in, taking 2 seconds
  • mynode[fade-in=0.5,1] --- fade in, taking 500ms, aligning this at the end of the transition if other transitions take longer
  • mynode[draw-line] --- for paths, draw them from start to finish
  • mynode[fade-down] --- fade in and come 20pix down
  • mynode[appear-along=PathId,5,0] --- appear along a given path object, take 5 seconds, align at the begining of the transition

Transitioning objects from one stage to the next

  • mynode[move=1.5] --- 1.5 second morph .. could be color, position, rotation, ... will be morphed

Exit animation

  • mynode[fade-out=1] --- 1 second fade out

External content

  • rect[youtube=55bjCP9Fy5I] will embed a YT video

Shortcuts

  • ? --- open shortcut overview
  • Left, Right, Up, Down, [, ] --- stage navigation
  • Shift + Left etc. --- navigation, skipping incremental builds
  • Home, End --- go to start or beginning
  • G 10 G -- go to slide number 10
  • F --- go full screen
  • C --- open the cockpit (presenter view). move this to a separate window
  • T --- start/stop the timer (visible in presenter view)
  • R --- reset the timer to zero
  • B --- toggle blacking out the slide