adonisote / popscle.com

Resources to learn anything, curated by people you trust.
https://popscle.com
1 stars 0 forks source link

Topic Spaces (draft) #8

Open malikpiara opened 3 months ago

malikpiara commented 3 months ago

Context

Spaces are pages that display learning resources for a specific topic, organised by type of medium (book, online course, video, podcast, article). They are a core part of our product and they don't exist yet. Let's change that :)

Investment

To get the ball rolling, between 2 to 3 days should be enough to design a solution that we can use to show and test with real users before iterating and committing more time. For that reason, we need to be careful with how we approach the scope.

Proposed Solution

To create a page akin to Reddit and Hacker News where users can see and upvote every links that was submitted.

For now, only we can create spaces for new topics. This means we don't have to worry about defining conventions or writing requirements related with creating a space.

  1. Users should be able to upvote links and to undo their upvote but there is no downvote functionality (just like Hacker News). The reason someone downvotes a post can be ambiguous and not helpful for the outcomes we're trying to achieve. We're also not sure whether "upvotes" is the best way to recommend a resource so our development should be approached with a learning mindset.

  2. The url for a given space should be {/s/nameOfTheSpace} . "S" stands for space and the reason we're using it is because we might want to use certain routes in the future that are already in use by a space. This will help prevent this issue. For the sake of consistency, let's always lowercase the slug string.

  1. The 2 main filters on top of a space are "Free" and "Paid". Clicking on them should trigger a re-render of the page so that it only displays content that fits the filter.

  2. Every item on a list should have an index that corresponds to their position in the ranking. For now, ranking = total number of upvotes. When two items have the same number of upvotes, let's order them by whatever is faster to implement. This level of granularity and detail doesn't matter yet.

  3. When users click on an entry, the url of the resource should open in a new tab. This way, users can keep browsing and looking into the other resources that exist in a given space.

  4. Every space is organised with different sections:

    • Everything
    • Books
    • Online Courses
    • Videos
    • Podcasts
    • Articles

When a section has not item, that section shouldn't be rendered. For now, we don't need to limit the number of items that are displayed in a given section. Let's build, learn and iterate according to feedback from real users and interactions.

IMAGE 2024-06-17 12:34:26

Here's an idea of what a space can look like on desktop:

IMAGE 2024-06-17 17:24:04

Things that can go wrong

  1. Users might submit content that has already been submitted before or that has a broken url. Right now this is not an issue that is likely to take place and we can remove or change entries manually.
  2. [Work in Progress]

Out of scope

  1. We're not implementing a downvote button.
  2. We're not implementing a way for users to join or follow a space yet.
  3. We're not creating a fancy ranking for the user submissions yet.