
Bookmarkify
Visual bookmark manager for creative inspiration.
Discover top open-source software, updated regularly with real-world adoption signals.

Add likes, bookmarks, and reactions to Laravel models
A Laravel package that enables markable features—likes, favorites, bookmarks, reactions—on any Eloquent model with minimal configuration and custom metadata support.
Laravel Markable is a flexible package designed for Laravel developers who need to add user engagement features like likes, bookmarks, favorites, and reactions to their Eloquent models. By adding a single trait and defining mark types, you can enable rich interaction tracking across any model in your application.
The package supports both simple marks (likes, bookmarks) and value-based marks (reactions with emoji or custom values). Each mark type uses its own database table for optimal query performance. You can attach custom metadata to marks, define allowed value subsets, or use wildcards for unrestricted values. The API provides intuitive methods—, , , , and —for managing marks and querying engagement data.
add()remove()toggle()has()count()Developers can create custom mark types by extending the abstract Mark class and publishing corresponding migrations. The package ships with pre-built marks (Like, Bookmark, Favorite, Reaction) and allows full control over table naming via a configurable prefix. Ideal for content platforms, e-commerce, social networks, and any application requiring user interaction tracking.
When teams consider Laravel Markable, these hosted platforms usually appear on the same shortlist.
Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.
Course platform with likes and bookmarks
Students can like courses and bookmark lessons, while instructors view engagement metrics to identify popular content.
Blog with emoji reactions
Readers react to posts with custom emojis, and editors analyze reaction distributions to gauge sentiment and topic resonance.
E-commerce wishlist and favorites
Shoppers bookmark products and mark favorites, enabling personalized recommendations and abandoned-wishlist campaigns.
Community forum with upvotes
Members upvote helpful answers, and the system surfaces top-rated content while tracking contributor reputation.
Yes. Add multiple mark class namespaces to the $marks array in your model, and each mark type will function independently with its own table.
Create a migration with the 'markable_' prefix, then extend the abstract Mark class and implement markableRelationName(). Optionally define allowed values in the config.
Yes. Pass an array as the third argument to add() or toggle() to store custom metadata in the JSON metadata column.
If allowed_values is defined and the value is not in the list (or wildcard), the package will reject the mark. Check the config for your mark type.
The default migrations do not include soft deletes. You can modify the published migrations to add softDeletes() if needed.
Project at a glance
ActiveLast synced 4 days ago