Group, Groupmember, groupTutorial, progress, solution, heartbeat#23
Open
Lav-Sen wants to merge 7 commits into
Open
Group, Groupmember, groupTutorial, progress, solution, heartbeat#23Lav-Sen wants to merge 7 commits into
Lav-Sen wants to merge 7 commits into
Conversation
Thiemann96
reviewed
Jun 16, 2026
Thiemann96
requested changes
Jun 17, 2026
Thiemann96
left a comment
Contributor
There was a problem hiding this comment.
From code review all in all looks solid! Please see the attached comments for improvements.
In Summary
- keep track of code consistency across your implementation
- if you write excessive docs, please make sure they are correct. otherwise just remove them (though a little bit of documentation what a function does is nice but you dont need to document every exception to the rule ;) )
- remove logs from development
| claimed: false, | ||
| }); | ||
|
|
||
| await student.save(); |
Contributor
There was a problem hiding this comment.
shouldnt this be checked if it returns true and if it returns true respond with a success response?
| } | ||
|
|
||
| const group = await Group.findById(groupId); | ||
| if (!group) { |
Contributor
There was a problem hiding this comment.
reply to my commet above:
like you do here
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces Group functionality for Blockly, enabling teachers to create and manage groups and allowing students to join them using an access code.
It also adds support for:
The implementation includes new API endpoints and corresponding database schemas.
Features
Groups
Group Members
Group Tutorials
Progress Tracking
currentPage,totalPages, and completion statelastSeenactivity for online statusSolutions
Heartbeat / Online Status
lastSeenAdded API Endpoints
Groups
POST /api/groups– Create a group (teacher)GET /api/groups– Retrieve teacher's groupsGET /api/groups/dashboard– Retrieve teacher's groupsGET /api/groups/:groupId– Get group details (member)PATCH /api/groups/:groupId– Update group name (teacher)PATCH /api/groups/:groupId/archive– Archive group (teacher)DELETE /api/groups/:groupId– Delete group (teacher)Join / Leave Groups
POST /api/groups/join– Join a group via access code (student)DELETE /api/groups/:groupId/leave– Leave a group (student)Group Members
GET /api/groups/:groupId/members– Retrieve all members (teacher)DELETE /api/groups/:groupId/members/:userId– Remove member (teacher)Tutorials
GET /api/groups/:groupId/tutorials– Retrieve released tutorials (students)GET /api/groups/:groupId/tutorials/manage– Retrieve tutorials with release status (teacher)POST /api/groups/:groupId/tutorials– Assign tutorial to group (teacher)DELETE /api/groups/:groupId/tutorials/:tutorialId– Remove tutorial assignment (teacher)Solutions
GET /api/groups/:groupId/solutions– Retrieve all published solutionsPOST /api/groups/:groupId/solutions– Publish a solutionDELETE /api/groups/:groupId/solutions/:solutionId– Withdraw a solutionProgress
PUT /api/groups/:pseudoUserId/progress– Retrieve all published solutionsStatus
GET /api/groups/:pseudoUserId/heartbeat– Retrieve all published solutionsDatabase Schema
groups_idnameaccessCode(unique)teacherIdarchivedcreatedAtupdatedAtgroupMembers_idgroupIduserIdrole(teacher | student)joinedAtgroupTutorials_idgroupIdtutorialIdassignedAtassignedByprogress_iduserIdgroupIdtutorialIdcurrentPagetotalPageslastSeenupdatedAtpseudoUsers_idnamenicknamegroupIdsessionTokenonlineStatuslastSeencreatedAtsolutions_iduserIdgroupIdtutorialIdblocklyXmlpublishedAtNotes
lastSeentimestamp.blocklyXml.