-
Notifications
You must be signed in to change notification settings - Fork 8
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
group
that has 1 or morepeople
.
No permissions, complexRBAC
,LDAP
or 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
person
first tries to share anitem
orlist
(ofitems
) in theApp
,- Automatically and transparently create a new
group
for them with their name as thegroup.name
- Inviting someone to collaborate on an
item
will 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 morepeople
to it by visiting:/groups/:id
"
- Automatically and transparently create a new
- Create endpoint to manage
groups
. - Create an interface to allow
people
to 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 havedefault
kinds that can help theperson
to 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 ofgroup
we will need.
group_members
The lookup table that lists the people
who are members
of a group
-
group_id
Int
fk
: theid
of thegroup
-
person_id
Int
: theperson.id
of the person in thegroup
-
inserted_at
DateTime
: defaultPhoenix
field for the insertion of a record. -
admin
Bool
: if the person can administer (add/remove others from) thegroup
-
added_by
Int
: theperson.id
of theperson
who added themember
to thegroup
-
removed
DateTime
:default:null
the date when a person is removed from agroup
(it happens ...) -
removed_by
Int
:default:null
theperson.id
that removed thisperson
from thegroup
Features
- Build mini SPA for creating/managing
groups
usingLivView
:
@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