No description
Find a file
Jordan Eldredge 1da77a640a
Consolidate ESLint configs into root (#1324)
Move general-purpose lint rules from packages/webamp/.eslintrc to the root
.eslintrc so they apply to all packages consistently. This includes:

- Core JavaScript best practices (no-var, prefer-const, eqeqeq, etc.)
- TypeScript-specific rules (@typescript-eslint/no-unused-vars with patterns)
- Prettier integration

Package-specific configs now only contain rules unique to their needs:
- webamp: React, import, and react-hooks plugin rules
- skin-database: Extends @typescript-eslint/recommended, disables rules that
  conflict with existing code style
- webamp-modern: Unchanged (has root: true for isolation)

Also fixes lint errors in skin-database:
- Consolidate duplicate imports in App.js and Feedback.js
- Add radix parameter to parseInt
- Prefix unused function parameters with underscore
- Convert var to let/const
- Fix type import for Shooter
2025-11-27 21:32:10 -08:00
.github/workflows Remove touch 2025-07-12 13:11:11 -07:00
config Fixup winamp-eqf tests 2025-07-06 18:00:48 -07:00
docs Type winamp-eqf 2025-07-06 17:17:55 -07:00
examples Add example showing how to use requireButterchurnPresets 2025-07-15 19:00:09 -07:00
packages Consolidate ESLint configs into root (#1324) 2025-11-27 21:32:10 -08:00
scripts Check Grats artifacts in CI 2025-07-07 15:33:05 -07:00
.editorconfig Format css according to prettier default config 2018-10-20 10:12:19 -07:00
.eslintignore Try harder to use monorepo version 2022-09-20 22:07:45 -07:00
.eslintrc Consolidate ESLint configs into root (#1324) 2025-11-27 21:32:10 -08:00
.gitattributes Update .gitattributes 2023-03-27 20:26:22 -07:00
.gitignore Try Turborepo (#1304) 2025-07-06 22:50:04 -07:00
.nvmrc Upgrade node 22 lts (#1305) 2025-07-07 10:30:13 -07:00
.prettierignore Fix prettier ignore 2024-03-01 23:50:31 -08:00
LICENSE.txt Fix links in root README 2020-07-03 22:02:09 -07:00
netlify.toml Try to fix netlify deploy 2025-07-15 18:57:35 -07:00
package.json Try package-specific Netlify build 2025-07-15 20:13:45 -07:00
pnpm-lock.yaml Action buttons 2025-11-07 15:44:54 -08:00
pnpm-workspace.yaml Migrate from yarn to pnpm (#1303) 2025-07-06 15:45:44 -07:00
README.md Update readme to reflect package changes 2025-07-15 16:59:41 -07:00
turbo.json Consolidate ESLint configs into root (#1324) 2025-11-27 21:32:10 -08:00

gzip size Discord

Webamp

A reimplementation of Winamp in HTML5 and JavaScript with full skin support. As seen on TechCrunch, Motherboard, Gizmodo, Hacker News (1, 2, 3, 4), and elsewhere.

Screenshot of Webamp

Check out this Twitter thread for an illustrated list of features. Works in modern versions of Edge, Firefox, Safari and Chrome. IE is not supported.

Read the docs

The Webamp Documentation site contains detailed instructions showing how to add Webamp to your site and customize it to meet your needs.

About This Repository

Webamp uses a monorepo approach, so in addition to the Webamp NPM module, this repository contains code for a few closely related projects and some pieces of Webamp which are published as standalone modules:

Community

Join our community chat on Discord: https://discord.gg/fBTDMqR

Related communites:

In the Wild

An incomplete list of websites using Webamp:

Thanks

  • Butterchurn, the amazing Milkdrop 2 WebGL implementation. Built and integrated into Webamp by: jberg
  • Research and feature prototyping: @PAEz
  • Beta feedback, catching many small UI inconsistencies: LuigiHann
  • Beta feedback and insider answers to obscure Winamp questions: Darren Owen
  • Donating the webamp NPM module name: Dave Eddy

Thank you to Justin Frankel and everyone at Nullsoft for Winamp which inspired so many of us.

License

While the Winamp name, interface, and, sample audio file are surely property of Nullsoft, the code within this project is released under the MIT License. That being said, if you do anything interesting with this code, please let me know. I'd love to see it.

Development

This repository uses Turborepo for efficient monorepo management. Turborepo provides intelligent caching and parallel execution of tasks across all packages.

Quick Start

# Install dependencies
pnpm install

# Build all packages (automatically handles dependencies)
npx turbo build

# Build library bundles for packages that need them
npx turbo build-library

# Run all tests
npx turbo test

# Lint and type-check all packages
npx turbo lint type-check

# Work on a specific package and its dependencies
npx turbo dev --filter="webamp"

Package Dependencies

The monorepo dependency graph is automatically managed by Turborepo:

  • ani-cursor and winamp-eqf are standalone packages built with TypeScript
  • webamp depends on both ani-cursor and winamp-eqf for workspace linking
  • All packages are built in the correct topological order
  • Builds are cached and only rebuild what has changed

Available Tasks

  • build - Main build output (Vite for demos, TypeScript compilation for libraries)
  • build-library - Library bundles for NPM publishing (only applies to webamp)
  • test - Run unit tests with Jest
  • type-check - TypeScript type checking without emitting files
  • lint - ESLint code quality checks
  • dev - Development server (for packages that support it)

For more details on individual packages, see their respective README files.