OpenBeta / open-tacos

Rock climbing route catalog (openbeta.io)
https://openbeta.io
GNU Affero General Public License v3.0
135 stars 117 forks source link

Add a way to view your favourites / create collections of climbs #468

Open CocoisBuggy opened 2 years ago

CocoisBuggy commented 2 years ago

This should be a tab in your profile view (Like tiktok). when the user clicks it, the climbs in their collections should be enumerated.

There is a minor challenger here because there's no way to left join the names onto the collection of IDs. In the short term for limited lists of IDs, there will simply be a scroll stream and potentially a quick P.R on the backend to batch an array of IDs into an array of qualified climb data.

CocoisBuggy commented 2 years ago

Figma design concept: https://www.figma.com/file/Lvtb9bcbbN8zBexVSvaaFh/OpenBeta-Prototypes?node-id=0%3A1

Collections Concept

I've done some thinking about how collections might be leveraged for a number of things, I'll quickly give a rundown of how I imagine this going.

With the goal being to create a set of back-end functions and front-end UI that is flexible enough to encompass multiple features, here is the idea:

Reusability

Collections may be used to compose any set of climbs and areas (both may appear in the collection). This means we can allow users to make and share their own sets of climbs that would not be appropriate in their own area (For example: "Best dynos in rocklands" or "Hidden gems in squamish"), but it also means we can leverage a number of system-managed collections with guarenteed immediate front-end implementation.

Favourites is an obvious example of a system-managed collection, but other ones may be "Recommended for you" or "Edited by you" or "Recent Additions" or "Climbs you've tagged"... etc.

Conceptually simple, but potentially a flexible bit of reusable functionality we can leverage for our own purposes.

We do maybe need a better name than 'collection', as 'collection' is a mongodb term that may get confusing for us down the line. Potentially 'containers' or something.