You are required to build the server and front end for a chat system.
The chat system will allow users to communicate with each other in real-time within
different groups and channels. Some users will have admin permission to add users to
channels and groups, whilst a super admin has access to the entire site. The solution must
be implemented using Node.js, Angular, and sockets.
Terminology
Group
A collection of users that have been given permission from a group admin or super
admin to be able to be a member of the group.
Multiple groups can exist.
Each user can exist in multiple groups.
Channel
Each group will have access to several rooms/channels for the purpose of chatting.
The super/group/group assis admin can create the rooms and give/remove permission
for existing group member to access them.
Architecture
A global list of groups is required.
A global list of rooms is required for each group.
A list of which users are in each group and rooms.
Users
• UserName
• Email
• ID
• Role
The system will have users which can have the following additional roles:
• Super Admin
• Group Admin
• Group Assis (Assistant)
Super Admin
• A Super Admin can create users with Group Admin role.
• A Super Admin can also remove all users.
• A Super Admin can also upgrade another user to Super Admin role.
• A Super Admin can also do whatever a group admin can.
Group Admin
• A Group Admin can create groups.
• A Group Admin also can create channels (subgroups) within groups.
• A Group Admin can create and or invite users to a channel (if the user has already
been created, they will simply be added to the channel).
• A Group Admin can remove groups, channels, and users from channels.
• A Group Admin can also allow a user to become a Group Assis of the group.
• A Group Admin other than a Super Admin cannot create a user with Group Admin role.
Group Assis
• A Group Assis of a group can add or remove users in the group from channels
within the group.
• A Group Assis of a group can also create channels within the group.
• Group Assis cannot do other operations of the Group Admin role.
The chat system will allow users to communicate with each other in real-time within
different groups and channels. Some users will have admin permission to add users to
channels and groups, whilst a super admin has access to the entire site. The solution must
be implemented using Node.js, Angular, and sockets.
Terminology
Group
A collection of users that have been given permission from a group admin or super
admin to be able to be a member of the group.
Multiple groups can exist.
Each user can exist in multiple groups.
Channel
Each group will have access to several rooms/channels for the purpose of chatting.
The super/group/group assis admin can create the rooms and give/remove permission
for existing group member to access them.
Architecture
A global list of groups is required.
A global list of rooms is required for each group.
A list of which users are in each group and rooms.
Users
• UserName
• ID
• Role
The system will have users which can have the following additional roles:
• Super Admin
• Group Admin
• Group Assis (Assistant)
Super Admin
• A Super Admin can create users with Group Admin role.
• A Super Admin can also remove all users.
• A Super Admin can also upgrade another user to Super Admin role.
• A Super Admin can also do whatever a group admin can.
Group Admin
• A Group Admin can create groups.
• A Group Admin also can create channels (subgroups) within groups.
• A Group Admin can create and or invite users to a channel (if the user has already
been created, they will simply be added to the channel).
• A Group Admin can remove groups, channels, and users from channels.
• A Group Admin can also allow a user to become a Group Assis of the group.
• A Group Admin other than a Super Admin cannot create a user with Group Admin role.
Group Assis
• A Group Assis of a group can add or remove users in the group from channels
within the group.
• A Group Assis of a group can also create channels within the group.
• Group Assis cannot do other operations of the Group Admin role.