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

aabdelaziz-medusa-wishlist-plugin

v1.0.0

Published

A comprehensive wishlist plugin for Medusa v2 with admin widget support

Readme

aabdelaziz-medusa-wishlist-plugin

A comprehensive wishlist plugin for Medusa v2 with admin widget support.

Features

  • Complete CRUD Operations: Create, read, update, and delete wishlists
  • Customer Wishlist Management: Each customer can have one wishlist per sales channel
  • Product Variant Support: Add specific product variants to wishlists
  • Admin Widget: View wishlist count directly on product pages in the admin panel
  • Store & Admin APIs: Full API support for both storefront and admin operations
  • Database Migrations: Automatic database setup with proper indexing
  • TypeScript Support: Fully typed with TypeScript
  • Medusa v2 Compatible: Built specifically for Medusa v2

Installation

npm install aabdelaziz-medusa-wishlist-plugin

Configuration

Add the plugin to your medusa-config.ts:

import { defineConfig } from '@medusajs/framework/utils'

export default defineConfig({
  // ... other config
  plugins: [
    // ... other plugins
    {
      resolve: "aabdelaziz-medusa-wishlist-plugin",
      options: {},
    },
  ],
})

Database Migration

Run the migration to create the required database tables:

npx medusa db:migrate

This will create two tables:

  • wishlist: Stores customer wishlists
  • wishlist_item: Stores individual wishlist items

API Endpoints

Store API

Create Wishlist

POST /store/customers/me/wishlists
Authorization: Bearer {customer_token}

Get Customer Wishlist

GET /store/customers/me/wishlists
Authorization: Bearer {customer_token}

Add Item to Wishlist

POST /store/customers/me/wishlists/items
Content-Type: application/json
Authorization: Bearer {customer_token}

{
  "variant_id": "variant_123"
}

Remove Item from Wishlist

DELETE /store/customers/me/wishlists/items/{item_id}
Authorization: Bearer {customer_token}

Admin API

Get Product Wishlist Count

GET /admin/products/{product_id}/wishlist
Authorization: Bearer {admin_token}

Response:

{
  "count": 5
}

Admin Widget

The plugin automatically adds a wishlist widget to product detail pages in the admin panel, showing how many customers have added the product to their wishlists.

Usage Examples

Frontend Integration

// Add item to wishlist
const addToWishlist = async (variantId: string) => {
  const response = await fetch('/store/customers/me/wishlists/items', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${customerToken}`
    },
    body: JSON.stringify({ variant_id: variantId })
  })
  return response.json()
}

// Get customer wishlist
const getWishlist = async () => {
  const response = await fetch('/store/customers/me/wishlists', {
    headers: {
      'Authorization': `Bearer ${customerToken}`
    }
  })
  return response.json()
}

Admin Dashboard

The admin widget automatically appears on product pages and shows the wishlist count for each product.

Database Schema

Wishlist Table

  • id: Primary key
  • customer_id: Reference to customer
  • sales_channel_id: Reference to sales channel
  • created_at: Creation timestamp
  • updated_at: Last update timestamp
  • deleted_at: Soft delete timestamp

Wishlist Item Table

  • id: Primary key
  • product_variant_id: Reference to product variant
  • wishlist_id: Reference to wishlist
  • created_at: Creation timestamp
  • updated_at: Last update timestamp
  • deleted_at: Soft delete timestamp

Requirements

  • Medusa v2.8.4+
  • Node.js 20+
  • PostgreSQL database
  • React Query 5.64.2+ (peer dependency)

Development

# Build the plugin
npm run build

# Development mode
npm run dev

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License

Support

For issues and questions, please open an issue in the repository.

Changelog

v1.0.0

  • Initial release
  • Complete wishlist functionality
  • Admin widget support
  • Full API coverage
  • Database migrations