journaly icon indicating copy to clipboard operation
journaly copied to clipboard

👬🏻👭 Feature: User created groups

Open Lanny opened this issue 3 years ago • 1 comments

General discussion ticket to outline what user groups might look like and a high level design. Do not expect this to happen in the short-tem

Perceived Problem

There are a few opportunities we can capitalize with user groups:

  • Multi-lingual bookclub is an ideal usecase for groups, allows users to spawn other bookclubs if they like
  • Journaling can be somewhat private, limited access groups might make users more comfortable making some kinds of posts
  • Great infra for the educational usecase (e.g. the "FooU Spanish 201 Fall 2022" group)
  • Takes some of the burden off of topics, e.g. if someone wants to make a "<popular TV show> discussion" group that's perfectly reasonable, but we wouldn't really want that to be a general topic.
  • Facilitates intra-user relationship formation better than the "shout into the void" style of a common feed (would be nice incorporate some messaging features, e.g. a discussion thread tied to the group, or private messages that broadcast between group members)

UX

Site grows a few more pages:

  • Group pages, keyed by group ID, presents info about the group, recent posts made to the group, join CTA (if applicable) and edit controls for owners
  • Group directory
  • Maybe "Groups" entry in nav? Need to work out some kind of entrypoint
  • Users get their group membership listed on their profile
  • New/edit post page allows the user to select what groups (including the "general" or "public" option) a post will belong to

General DB Design

Groups:

field type description
public boolean Can the content of the group be read by non-members
joinPolicy enum How do users join? Options are "anyone can join any time", "owner approves", and "owner invites"
description string Blurb describing the group

Groups are in an M2M with users modeling membership:

field type description
user User User that the M2M applies to
group Group Group that the M2M applies to
role enum One of "owner", "member", and "blocked" (blocked meaning user is not a member of the group and can not re-join

Posts also enter into an M2M with groups:

field type description
post Post Post that the M2M applies to
group Group Group that the M2M applies to

Posts also get a new "general" or "public" field indicating if they should be presented in the general feed or are limited to the groups they belong to

Lanny avatar Apr 27 '21 18:04 Lanny

Love this! We had a few requests even as early as the Alpha for the ability to share posts privately, and I also agree that the multilingual book club really highlighted not only a good use case for groups but also just how much enthusiasm exists in the community for this type of thing. High-level design looks good too!

robin-macpherson avatar Apr 28 '21 07:04 robin-macpherson