This feels awkward to ask for help from such a bird’s-eye level on this project. I’ve taken many tutorials/lessons, read a lot on these forums and can’t sort out the data/workflow to fit the UX I want.
The product is a decentralized forum, with no moderation whatsoever, that naturally incentivizes good-faith interactions among strangers.
First the similarities to existing forums:
- Content is posted in subs.
- Users can comment on the posts.
- These posts/replies are value-indicated* by readers.
Now the differences:
*Posts/replies are RANKED, not up/down voted. Users see 3 pieces of content (in the same category) and are asked to rank them from most to least relevant.
These rankings deliver points to the creators of the content.
Rankings are weighted; 1st place ranking from a high-scoring user will deliver more points than a 1st place from a low-scoring user.
The “posts” are not on a board, but received as private messages. These messages are delivered based on a user’s score (high-scoring users see high-scoring content).
There is no browsing. Users see one post, and must reply to it before seeing the next one.
These replies are similarly ranked by the creator of the post, but never seen by anyone else.
There are no front-end profiles or casual private messaging! The platform is pseudonymous.
Bonus features (will implement in the MVP if it’s easy):
- Scores are an average of the user’s last 10 actions (to give new people a chance to see high-value content).
- Users see this “rolling average” score and their % (performance percentile) on the home page.
- To structure the data, I’ve read that having posts/replies as a FIELD under a USER (data type) can bloat the system. And that it may be better to structure these as a field under a THREAD data type. Is that true in my case, given that there is no scrolling element here?
- There are 4 scores: that of the poster, their message, the recipient, and their reply (not dissimilar from Reddit’s post/comment scores). By default, I want users to receive content from posters who are at/below their level (in descending order). How do points fit into the data types here? Are they their own data type?
- Privacy: I want the messages to be seen by anyone (who has a high enough score to do so), but replies should only be seen by the person being replied to. I don’t want scores to be visible by anyone (except the ones mentioned in bonus features above). Should I structure all data types to private, then make exceptions as-needed?
- From a UX perspective, what’s the best way to do rankings? My preference is for the user to hit each post in the order of value (first click is 1st place, 2nd click is 2nd, etc), then make it so a 4th click will reset. The simplest way from a design perspective would be a drop-down menu that grays out the options as they’re selected. Also considering drag and drop (but that feels like a bulky feature for this app).
Thank you for reading this! I don’t expect anyone to have the full answer (though that’d be awesome), so if you have any advice on any aspect of what I’m building please chip in!