Group manager for average users and better collaboration support
Groups are already present but need some refinement in my opinion.
Every user should have access to group management. Maybe to limit abuse the number of allowed groups created by a user should be limited.
Users have to accept an group invite by default but automatic integration with external group management should be possible (SSO).
The following things are needed in my opinion to make this a long lasting and useful feature.
Group manager component
An UI component (maybe placed in the users settings) to allow to create or manage groups.
-
Form: Should allow to create/delete groups -
Table: Manage memberships and your groups -
invite new users / resend invitations -
remove users from group -
transfer ownership -
set moderators (people how are allowed to invite users)
-
-
Admin flag to force users into group without invitation
Notification page
The notification page should show pending invitations and collaboration requests. Additionally these requests should be send by email.
Email requests
Create endpoint to send an invite request. Email should contain link to join the book. This can be typically implemented with token, the building blocks for this should already be present.
Rework/enhance the collaboration editor for books
At the moment a collaboration request is not send by email and people are just added to a book. The current form might be enhanced or reworked for invitation requests. Maybe also show pending requests.
Changes to the table structure
Add an owner column to the groups table with foreign constrain to user table. Add a moderator column to the users_group many to many table which indicates if a user is moderator of the group.
Notification also have to be stored somehow to allow the notifications to show. Lets keep this reasonably modular with the following columns:
Column | Type | Description |
---|---|---|
id | ID | |
created_at | Date | Creation date of the notification |
sender | user_id | The user who created the notification |
recipient | user_id | The user who received the notification |
email_send_at | Date | Last date the email was sent to notify the user |
notification_type | Enum | BookCollaboration, JoinGroup |