elonen/clapshot

Feature request: Collaborative playlist

Opened this issue · 2 comments

The current per video collaboration works very well and i love how easy it is to share a link.

Could collaborative playlist also be a thing? Perhaps if the videos are in a folder the collaboration mode would work as a playlist?

Kitsu and Ftrack has this and it works pretty well. Easily compare between shots and versions.

https://www.cg-wire.com/review-engine

kitsu-compare 7e995cbe

Kitsu is open source and i have it running on my server, however i like the simplicity of clapshot more. Kitsu is also very feature heavy and more complex as a whole package than many might need.

If this were possible to implement, another good addition could be the possibility of setting a status per shot. i.e "Approved/Retake/WIP/Rejected/To-Do.

Sorry for spamming feature requests. I just like this tool 🥰

Collaborative Playlist
Conceptual Approach: Allow multiple users to collaborate on a playlist of videos. Similar to collaborative folders, but now you have a “playlist” that can be reordered and shared.

Integration Points:

Database:

Add tables playlists and playlist_items similar to bf_folders and bf_folder_items in the Organizer’s schema.
playlists (id, name, owner_id, is_collaborative), playlist_items (playlist_id, media_file_id, sort_order).
Organizer:

Just like folders in organizer/basic_folders, create a collaborative_playlist command set.
Commands: new_playlist, add_to_playlist, reorder_playlist_items, open_playlist.
If is_collaborative=true, multiple users can add_to_playlist or reorder_items.
The logic is almost identical to folder logic, except it’s a playlist concept. Reuse code from folders.py and reorder_items_impl but referencing playlists.
Client:

Similar to folder UI, a Playlist.svelte component:
Display items, reorder with drag-and-drop, add media from a search box.
If collaborative, reflect changes in real-time by listening to server’s show_messages or collab_event.
Server:

Similar endpoints as folder logic, but for playlists. Possibly integrate them into the organizer gRPC calls, or add a separate cmd_from_client("open_playlist", {id: ...}).