-
Notifications
You must be signed in to change notification settings - Fork 0
feat: groups management #151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements a comprehensive groups management feature for the teacher dashboard, allowing teachers to create and manage user groups, assign group collaborators with different permission levels, and associate groups with contests.
Changes:
- Added complete groups management functionality with CRUD operations for groups, members, and collaborators
- Implemented access control for group collaborators with Edit, Manage, and Owner permission levels
- Integrated groups with contests, allowing teachers to add/remove groups from contests
- Added full i18n support for both English and Polish
Reviewed changes
Copilot reviewed 35 out of 35 changed files in this pull request and generated 20 comments.
Show a summary per file
| File | Description |
|---|---|
src/routes/dashboard/teacher/groups/groups.remote.ts |
Remote functions for listing and creating groups |
src/routes/dashboard/teacher/groups/[groupId]/group.remote.ts |
Remote functions for group details, members management (get, add, remove users) |
src/routes/dashboard/teacher/groups/[groupId]/collaborators/collaborators.remote.ts |
Remote functions for group collaborators access control |
src/routes/dashboard/teacher/contests/[contestId]/groups/groups.remote.ts |
Remote functions for managing groups assigned to contests |
src/lib/services/GroupsManagementService.ts |
Service class for groups API operations |
src/lib/services/ContestsManagementService.ts |
Added methods for contest-group relationships |
src/lib/dto/group.ts |
Type definitions for Group entities and DTOs |
src/lib/dto/accessControl.ts |
Added Groups to ResourceType enum |
| UI Components (GroupCard, CreateGroupButton, etc.) | 10 new Svelte components for groups UI |
messages/en.json and messages/pl.json |
Added 130 i18n strings for groups feature |
src/lib/routes.ts |
Added TeacherGroups route constant |
src/lib/components/dashboard/utils.ts |
Added title translations for group routes |
CLAUDE.md |
New documentation file for AI code assistant guidance |
src/lib/components/dashboard/admin/contests/RemoveGroupFromContestButton.svelte
Show resolved
Hide resolved
src/lib/components/dashboard/admin/contests/AddGroupToContestButton.svelte
Show resolved
Hide resolved
src/lib/components/dashboard/admin/contests/AddGroupToContestButton.svelte
Show resolved
Hide resolved
src/routes/dashboard/teacher/groups/[groupId]/collaborators/collaborators.remote.ts
Show resolved
Hide resolved
| name: v.pipe( | ||
| v.string(), | ||
| v.nonEmpty('Group name is required'), | ||
| v.minLength(3, 'Group name must be at least 3 characters'), | ||
| v.maxLength(50, 'Group name must be at most 50 characters') |
Copilot
AI
Jan 11, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Validation error messages should use i18n translation keys instead of hardcoded English strings. According to the project guidelines, user-facing strings must use Paraglide messages. Replace these hardcoded strings with references to message keys like m.groups_form_name_required(), m.groups_form_name_min_length(), and m.groups_form_name_max_length() (which are already defined in the i18n files).
No description provided.