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.
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.
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.
If users visit popscle.com/s/ or popscle.com/s/{spaceThatDoesNotExist}, they should be redirected to the homepage.
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.
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.
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.
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.
Here's an idea of what a space can look like on desktop:
Things that can go wrong
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.
[Work in Progress]
Out of scope
We're not implementing a downvote button.
We're not implementing a way for users to join or follow a space yet.
We're not creating a fancy ranking for the user submissions yet.
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.
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.
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.popscle.com/s/
orpopscle.com/s/{spaceThatDoesNotExist}
, they should be redirected to the homepage.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.
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.
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.
Every space is organised with different sections:
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.
Here's an idea of what a space can look like on desktop:
Things that can go wrong
[Work in Progress]
Out of scope