🚀 Member Event-Based Task System (Permission-Controlled)
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
This project is a production-grade Member Task System where members operate with organizer-level capabilities, controlled via a permission-based system.
✨ Features
- Event-based task management
- Permission-driven UI & actions
- Full task lifecycle:
Create → Assign → Submit → Review → Update
- Shared UI across roles (Organizer & Member)
🧠 Core Philosophy
Same UI for everyone → Different capabilities via permissions
- ❌ No restricted/limited UI for members
- ✅ One powerful system controlled via permissions
🧠 Architecture
Sidebar → Event → Tasks → Submissions → Review → Progress
🔐 Permission System
Default Permissions (All Members)
- View assigned tasks
- View task details
- Submit work
- Comment
Advanced Permissions (Organizer-Controlled)
| Permission | Description |
|---|---|
| CREATE_TASK | Create new tasks |
| ASSIGN_TASK | Assign tasks to others |
| UPDATE_STATUS | Update task status |
| EDIT_TASK | Edit tasks |
| DELETE_TASK | Delete tasks |
| MULTIPLE_SUBMISSION | Allow multiple submissions |
| LATE_SUBMISSION | Allow late submissions |
| VIEW_ALL_TASKS | View all event tasks |
🧭 Feature Flow
- Select Event
- View tasks (assigned OR all based on permission)
- Create task (if allowed)
- Assign task (if allowed)
- Submit work
- Review tasks (if allowed)
- Edit / delete tasks (if allowed)
🧱 Layout Structure
<MainLayout>
<SideBar />
<Content />
</MainLayout>
📂 Sidebar
Default Routes
SideBar.tsx
/member/dashboard
/member/tasks
Permission-Based Rendering
if (permissions.includes("CREATE_TASK")) {
show("Create Task");
}
if (permissions.includes("VIEW_ALL_TASKS")) {
show("All Tasks");
}
Requirements
Active route highlighting
Responsive (mobile drawer)
Collapsible
Permission-aware UI
📄 Pages & Features
📋 Task List Page
Route: /member/tasks
Behavior
if (permissions.includes("VIEW_ALL_TASKS")) {
fetchAllTasks();
} else {
fetchAssignedTasks();
}
Filters
Status (Todo / In Progress / Completed)
Time (Upcoming / Past)
Priority
Member (if allowed)
Search (debounced)
Actions
| Action | Permission |
|---|---|
| View | Default |
| Edit | EDIT_TASK |
| Delete | DELETE_TASK |
🔍 Task Detail Page
Route: /member/tasks/:taskId
Submission Rules
if (!permissions.includes("MULTIPLE_SUBMISSION")) { restrictSingleSubmission(); }
if (deadlinePassed && !permissions.includes("LATE_SUBMISSION")) {
disableSubmission();
}
Sections
Task Info
Submission Panel
Submission History
Status Update (if allowed)
Comments
Review Panel (if allowed)
➕ Create Task
Route: /member/tasks/create
if (!permissions.includes("CREATE_TASK")) {
redirect("/member/tasks");
}
✏️ Edit Task
if (!permissions.includes("EDIT_TASK")) {
blockAccess();
}
🗑️ Delete Task
if (!permissions.includes("DELETE_TASK")) {
blockAction();
}
🧱 Component Structure
components/
layout/
SideBar.tsx
MainLayout.tsxevent/
EventDropdown.jsxtask/
TaskTable.jsx
TaskDetail.jsx
TaskForm.jsx
SubmissionForm.jsx
CommentSection.jsx
common/
StatusBadge.jsx
PriorityBadge.jsx
ConfirmModal.jsx
SkeletonLoader.jsx
🔄 State Management
Library: React Query (TanStack Query)
State
selectedEventId
tasks
taskDetails
submissions
permissions
🌐 API
GET /api/tasks?eventId=&assignedTo=me
POST /api/tasks
PATCH /api/tasks/:id
DELETE /api/tasks/:id
POST /api/tasks/:id/submissions
POST /api/tasks/:id/comments
🎨 UI/UX Guidelines
Same UI as organizer
Only actions differ
Hide restricted features
Highlight urgent tasks
⚠️ Edge Cases
No event selected
No tasks available
Deadline passed
Permission changes dynamically
Direct URL access without permission
⚡ Performance
Cache tasks per event
Debounced search
Lazy loading
🔐 Security
Validate permissions on frontend
Backend must enforce RBAC
🧪 Testing Checklist
Permissions
Actions visible only if allowed
Create/Edit/Delete protected
Functional
Task CRUD works
Submission flow works
Filters work
UI
Responsive design
Loading states
Error handling
🚀 Implementation Plan
Phase 1: Layout + Sidebar
Phase 2: Task List + Filters
Phase 3: Task Detail + Submission
Phase 4: Permission System
Phase 5: Create/Edit/Delete
Phase 6: Final Polish
✅ Acceptance Criteria
Shared UI across roles
Permissions fully enforced
No unauthorized access
Clean, responsive UX
🏁 Final Note
This is a role-flexible system design:
Organizer → Full control
Member → Controlled power
Both operate on the same UI, enabling scalability and consistency.
If this still breaks when you paste somewhere, tell me where (VS Code, GitHub, Notion, etc.)—the fix depends on the tool.
- Lingua principale
- TypeScript
- Stelle
- 7
- Fork
- 17
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NexGenStudioDev/CommDesk
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
NexGenStudioDev/CommDesk#140 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
NexGenStudioDev/CommDesk#138 ·
-
[Bug] signup.ts: uploadCommunityLogo is a simulated stub that converts files to data URLs with no size or type validation, sending multi-megabyte base64 strings in the signup payloadForse di nuovo libera @anshul23102 l’ha presa 124 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
NexGenStudioDev/CommDesk#130 · 2 commenti ·
-
Input text not visible in authentication formsForse di nuovo libera @anshul23102 l’ha presa 124 giorni fa e non c’è nessuna pull request aperta. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
NexGenStudioDev/CommDesk#123 · 2 commenti ·
-
[UX] Hardcoded window dimensions not DPI-aware — UI broken on high-DPI displaysForse già presa @anshul23102 l’ha presa 94 giorni fa. Aperta
NexGenStudioDev/CommDesk#141 · 1 assegnatario ·
Tutte le issue di NexGenStudioDev/CommDesk
Issue simili
-
chore v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
modelcontextprotocol/servers#5115 ·
I maintainer di solito rispondono entro 1 giorno
-
beginner bug good first issue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
philaconvalley/website#168 ·
I maintainer di solito rispondono entro 1 giorno
-
bug frontend good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
oss-slu/lrda_mobile#294 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
hatchet-dev/hatchet#5179 ·
I maintainer di solito rispondono entro 1 giorno