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

yt-kara

v1.0.0

Published

Karaoke webapp for parties using YouTube videos

Downloads

4

Readme

YT-Kara 🎤

npm version License: MIT

A karaoke web app thrown together for parties - plays YouTube videos on a TV while friends control the queue from their phones. Vibe-coded quickly with Claude Code to solve a real problem: every karaoke app sucks or costs money.

Note: This was built fast to work, not to be pretty. The code isn't the cleanest and it probably won't be actively maintained. But hey, it works! 🤷

✨ Features

  • 🎵 YouTube Playback - Plays any YouTube video (actually works, unlike iframe embeds)
  • 📱 Phone Control - Everyone connects via QR code
  • 🔍 Search & Queue - Search YouTube, add to queue
  • 🎬 HD Streaming - Uses MSE for better quality when possible
  • 💾 Persistent Queue - Survives server restarts
  • 🔄 Real-time Sync - All devices stay in sync

📦 Installation

Requirements

  • Node.js 18+
  • Python 3+ (for yt-dlp)
  • A computer connected to a TV

Quick Install (npm)

# Install globally
npm install -g yt-kara

# Install yt-dlp (required for video extraction)
pip3 install yt-dlp

# Start it
yt-kara

Or use npx without installing:

# Install yt-dlp first
pip3 install yt-dlp

# Run directly
npx yt-kara

Alternative: Clone from Source

# Clone it
git clone https://github.com/Zeletochoy/yt-kara.git
cd yt-kara

# Install everything (includes yt-dlp)
npm run setup

# Start it
npm start

Manual Setup

If automated setup fails:

# Install yt-dlp (the magic that makes this work)
pip3 install yt-dlp
# or: brew install yt-dlp (macOS)
# or: sudo apt install yt-dlp (Ubuntu/Debian)

# Install node stuff (if cloned from source)
npm install

# Run it
npm start  # from source
# or: yt-kara  # if installed globally

🎮 How to Use

Setup for Party

  1. Run yt-kara on computer connected to TV
  2. Open http://localhost:8080 on the TV browser
  3. Everyone scans the QR code with their phones
  4. Search and add songs
  5. Party! 🎉

Controls

On the TV (host):

  • Space = Play/Pause
  • Click buttons for skip, previous, etc.

On phones:

  • Search songs
  • Add to queue
  • Basic playback controls

🛠️ Technical Stuff

Built with:

  • yt-dlp - The real MVP, extracts YouTube URLs
  • Express - Web server
  • WebSocket - Real-time sync
  • MSE - For HD streaming (when it works)

Files live in:

  • server/ - Backend stuff
  • public/ - Frontend stuff
  • data/ - Saved queues and cookies

🐛 Common Issues

"yt-dlp not found"

  • Just run: pip3 install yt-dlp

Videos won't load

  • Update yt-dlp: pip3 install --upgrade yt-dlp
  • YouTube changes their stuff constantly, yt-dlp usually catches up

Can't connect from phone

  • Make sure you're on the same WiFi
  • Firewall might be blocking port 8080

Looks janky

  • Yeah, it's not pretty. PRs welcome if you want to make it look nice!

⚠️ Disclaimers

  • This was made in a hurry for personal use
  • The code is functional but not clean
  • It might break when YouTube changes things
  • Use at your own risk
  • Respect content creators and YouTube ToS

🤝 Contributing

Feel free to fork and improve! Just don't expect quick responses on issues - this is a "works on my machine" project.

🍺 License

Beerware - If we meet someday and you think this is worth it, you can buy me a beer


Made for parties where someone always hogs the karaoke mic 🎤