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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@jfenc91/slidecraft

v0.3.0

Published

A modern Markdown-driven presentation framework with WebGL backgrounds, GPU-accelerated transitions, beautiful themes, code walkthroughs, live drawing, and remote control.

Readme

Slidecraft

A modern Markdown-driven presentation framework with cinematic WebGL backgrounds, GPU-accelerated transitions, beautiful themes, code walkthroughs, live drawing, and remote control.

Live demo →

Features

  • Markdown authoring — write slides as plain .md with YAML frontmatter
  • Per-slide frontmatter — set transition, background, class, or layout in a YAML block at the top of each slide
  • WebGL backgrounds — particles, gradient, geometric, waves
  • GPU transitions — dissolve, morph, zoom, slide
  • Code walkthroughs — line highlighting, multi-step reveals, syntax highlighting via highlight.js
  • Auto-fit code blocks — code text scales to the largest size that fits the slide without scrolling
  • Diff (before/after) layout — side-by-side <!-- layout: diff --> slides
  • Mermaid diagrams, KaTeX math, terminal blocks, fragments
  • Speaker notes, slide overview (G), drawing mode (D), laser pointer (L)
  • Remote control via QR code, autoplay, fullscreen
  • 20+ themes — midnight, aurora, cyberpunk, forest, ocean, synthwave, and more

Quick start

# Clone or use as a template
git clone https://github.com/jfenc91/slidecraft.git my-talk
cd my-talk
npm install
npm run dev

Open http://localhost:5173 to see the marketing site, or http://localhost:5173/view?p=presentation to launch the demo deck.

Install from npm

npm install @jfenc91/slidecraft

Authoring a presentation

Create public/presentations/my-talk.md:

---
title: My Talk
theme: midnight
transition: dissolve
background: particles
---

# Welcome

Your first slide.

---
transition: zoom
background: gradient
fragment: fade-up
---

## Second slide

+ Bullet one (revealed on keypress)
+ Bullet two

???
Speaker notes for this slide.

Then visit http://localhost:5173/view?p=my-talk.

Slide syntax

Slidecraft is plain CommonMark with three conventions on top:

| Feature | Syntax | |---------|--------| | Slide separator | A line containing only --- | | Per-slide config | A YAML frontmatter block right after the separator (---\nkey: value\n---) | | Speaker notes | A line containing only ???; everything below is notes | | Fragment (reveal on click) | A list item starting with + instead of - | | Section / subsection | The first # heading on a slide opens a section; the first ## opens a subsection |

Recognized per-slide YAML keys:

| Key | Values | Effect | |-----|--------|--------| | transition | dissolve, morph, zoom, slide, none | Override deck transition | | background | particles, gradient, geometric, waves, none | Override deck background | | class | centered, two-column, title-slide, … | Layout class on the slide element | | layout | diff | Built-in layout (e.g. before/after) | | fragment | fade-up, fade-left, fade-right, highlight-current | Default style for + fragments on this slide |

Keyboard shortcuts

| Key | Action | |-----|--------| | → ↓ Space | Next slide | | ← ↑ | Previous slide | | G | Slide overview grid | | F | Toggle fullscreen | | S | Speaker notes | | D | Drawing mode | | L | Laser pointer | | R | Remote control QR | | P | Pause / resume autoplay | | ? | Help overlay |

Building

npm run build          # build to dist/
npm run build:pages    # build with /slidecraft/ base path for GitHub Pages
npm run preview        # preview the production build locally

License

MIT © jfenc91