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
Permission-Based Rendering
if (permissions.includes("CREATE_TASK")) {
show("Create Task");
}
if (permissions.includes("VIEW_ALL_TASKS")) {
show("All Tasks");
}
Requirements
π Pages & Features
π Task List Page
Route: /member/tasks
Behavior
if (permissions.includes("VIEW_ALL_TASKS")) {
fetchAllTasks();
} else {
fetchAssignedTasks();
}
Filters
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
β 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.tsx
event/
EventDropdown.jsx
task/
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
β‘ Performance
Cache tasks per event
Debounced search
Lazy loading
π Security
π§ͺ Testing Checklist
Permissions
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
π Final Note
This is a role-flexible system design:
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.
This project is a production-grade Member Task System where members operate with organizer-level capabilities, controlled via a permission-based system.
β¨ Features
π§ Core Philosophy
Same UI for everyone β Different capabilities via permissions
π§ Architecture
π Permission System
Default Permissions (All Members)
Advanced Permissions (Organizer-Controlled)
π§ Feature Flow
π§± Layout Structure
π Sidebar
Default Routes
SideBar.tsxPermission-Based Rendering
Requirements
Active route highlighting
Responsive (mobile drawer)
Collapsible
Permission-aware UI
π Pages & Features
π Task List Page
Route:
/member/tasksBehavior
Filters
Status (Todo / In Progress / Completed)
Time (Upcoming / Past)
Priority
Member (if allowed)
Search (debounced)
Actions
π Task Detail Page
Route:
/member/tasks/:taskIdSubmission Rules
Sections
Task Info
Submission Panel
Submission History
Status Update (if allowed)
Comments
Review Panel (if allowed)
β Create Task
Route:
/member/tasks/createβοΈ Edit Task
ποΈ Delete Task
π§± Component Structure
π State Management
Library: React Query (TanStack Query)
State
selectedEventId
tasks
taskDetails
submissions
permissions
π API
π¨ UI/UX Guidelines
Same UI as organizer
Only actions differ
Hide restricted features
Highlight urgent tasks
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.