π§ What are we building?
We are building a Project View Page where users can see and manage projects.
This page is used by:
- π§βπ» Participants β see their own projects
- π’ Organizers β see all projects in their community/events
- βοΈ Judges β see assigned projects
- π‘οΈ Admins β see everything
π It is ONE page, but behavior changes based on role.
π― Goal
Create a clean, responsive page that:
- shows a list of projects
- supports actions (view, edit, delete, score)
- changes UI based on permissions
- works for events, hackathons, workshops
π§ Key Idea (IMPORTANT)
Same Page β Different Role β Different Actions
ποΈ Where will this page be used?
/participant/projects
/organizer/projects
/community/:id/projects
/event/:id/projects
/judge/projects
/admin/projects
π Use one reusable component, not separate pages.
π¦ Page Layout
Sidebar
Header (title + actions)
-------------------------
Search + Filters
-------------------------
Project Table
-------------------------
Pagination / Empty State
πΉ Sidebar
Use existing sidebar.
Highlight Projects tab.
πΉ Header
Show:
-
Page title:
- "My Projects" (participant)
- "Community Projects" (organizer)
- "Assigned Projects" (judge)
-
Button:
- β Create Project (only for participant)
π Filters & Search
Search
Filters
Sort
- Latest (default)
- Oldest
- A β Z
π Project Table
Common Columns (for all)
- Project Name
- Event Name
- Type
- Status
- Last Updated
Extra Columns (based on role)
π§βπ» Participant
-
Actions:
- View
- Edit (only draft)
- Delete
π’ Organizer
βοΈ Judge
π‘οΈ Admin
β‘ Actions (What user can do)
ποΈ View
- open project details page
βοΈ Edit
- only participant
- only draft projects
ποΈ Delete
- show confirmation modal
- call delete API
β Score (Judge)
βοΈ API
Get Projects
Query Example
?communityId=123
&eventId=456
&status=submitted
&page=1
Delete Project
DELETE /api/v1/projects/:id
Score Project
POST /api/v1/projects/:id/score
π Permissions (VERY IMPORTANT)
Backend must enforce:
- Participant β only own projects
- Organizer β only their community
- Judge β only assigned
- Admin β all
π Do NOT trust frontend role
π§© States to Handle
Loading
Empty
No projects yet
[ Create Project ]
No Results
Error
π‘οΈ Edge Cases
- no projects
- only drafts
- delete last project
- API fails
- unauthorized delete
π¨ UI Requirements
- responsive (mobile + desktop)
- clean table layout
- status badges (color)
- action menu (3 dots)
- proper spacing
π§ͺ What to test
π Suggested File Structure
/projects
βββ index.tsx
βββ components/
β βββ ProjectTable.tsx
β βββ Filters.tsx
β βββ ActionsMenu.tsx
β βββ DeleteModal.tsx
β βββ ScoreModal.tsx
π Future Improvements (Optional)
- bulk delete
- real-time updates
- analytics
- project tags
β
Done When
- page works for all roles
- permissions correctly applied
- UI responsive
- API integrated
- no crashes / edge cases handled
π― Priority
π₯ High (Core feature)
π Final Note
This page is used everywhere in CommDesk.
π Keep it:
- simple
- clean
- permission-driven
π Focus on:
Correct data + correct permissions > fancy UI
π§ What are we building?
We are building a Project View Page where users can see and manage projects.
This page is used by:
π It is ONE page, but behavior changes based on role.
π― Goal
Create a clean, responsive page that:
π§ Key Idea (IMPORTANT)
ποΈ Where will this page be used?
π Use one reusable component, not separate pages.
π¦ Page Layout
πΉ Sidebar
Use existing sidebar.
Highlight Projects tab.
πΉ Header
Show:
Page title:
Button:
π Filters & Search
Search
Filters
Status:
Type:
Sort
π Project Table
Common Columns (for all)
Extra Columns (based on role)
π§βπ» Participant
Actions:
π’ Organizer
Extra:
Actions:
βοΈ Judge
Extra:
Actions:
π‘οΈ Admin
Actions:
β‘ Actions (What user can do)
ποΈ View
βοΈ Edit
ποΈ Delete
β Score (Judge)
βοΈ API
Get Projects
Query Example
Delete Project
Score Project
π Permissions (VERY IMPORTANT)
Backend must enforce:
π Do NOT trust frontend role
π§© States to Handle
Loading
Empty
No Results
Error
π‘οΈ Edge Cases
π¨ UI Requirements
π§ͺ What to test
π Suggested File Structure
π Future Improvements (Optional)
β Done When
π― Priority
π₯ High (Core feature)
π Final Note
This page is used everywhere in CommDesk.
π Keep it:
π Focus on: