-
Notifications
You must be signed in to change notification settings - Fork 8
EPIC: groups: how to collaborate with one or more people #220
Description
Story
As a person wanting to collaborate with others,
I want a way to create a group
that I can add people to
and then share a list of items with
So that I can keep track of who sees, can edit and work on what items.
Note: the initial "MVP" version of this feature is just a basic
groupthat has 1 or morepeople.
No permissions, complexRBAC,LDAPor other "Enterprise" features, yet!
We can iterate from our simple version and add more advanced/complex features later.
For now we just need something we can start using internally and collect feedback from ourselves.
Todo
- When a
personfirst tries to share anitemorlist(ofitems) in theApp,- Automatically and transparently create a new
groupfor them with their name as thegroup.name - Inviting someone to collaborate on an
itemwill automatically add them to thegroup - Once the initial share has occurred, we can inform the
person:
🤖 "By the way I created this group for you and you can add morepeopleto it by visiting:/groups/:id"
- Automatically and transparently create a new
- Create endpoint to manage
groups. - Create an interface to allow
peopleto manually create a newgroup
Proposed Schema (please comment/discuss!)
group
-
name:Fields.Encrypted- the name of the group. -
description:Fields.Encrypted- the description -
kind:String- e.g.family,friends,personal,sports,work, etc. - we will havedefaultkinds that can help thepersonto categorise theirgroup; we could consider making this a free-text field in the future or adding more kinds via Pull Request (so they are hard-coded) because, let's be fair, there are't that many kinds ofgroupwe will need.
group_members
The lookup table that lists the people who are members of a group
-
group_idIntfk: theidof thegroup -
person_idInt: theperson.idof the person in thegroup -
inserted_atDateTime: defaultPhoenixfield for the insertion of a record. -
adminBool: if the person can administer (add/remove others from) thegroup -
added_byInt: theperson.idof thepersonwho added thememberto thegroup -
removedDateTime:default:nullthe date when a person is removed from agroup(it happens ...) -
removed_byInt:default:nulltheperson.idthat removed thispersonfrom thegroup
Features
- Build mini SPA for creating/managing
groupsusingLivView:
@SimonLab thoughts? Am I missing anything? Am I over-complicating it? or is this "just enough" to get started? Thanks! 🙏
Metadata
Metadata
Assignees
Labels
Type
Projects
Status