aabdelaziz-medusa-wishlist-plugin
v1.0.0
Published
A comprehensive wishlist plugin for Medusa v2 with admin widget support
Maintainers
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-pluginConfiguration
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:migrateThis will create two tables:
wishlist: Stores customer wishlistswishlist_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 keycustomer_id: Reference to customersales_channel_id: Reference to sales channelcreated_at: Creation timestampupdated_at: Last update timestampdeleted_at: Soft delete timestamp
Wishlist Item Table
id: Primary keyproduct_variant_id: Reference to product variantwishlist_id: Reference to wishlistcreated_at: Creation timestampupdated_at: Last update timestampdeleted_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 devContributing
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
