Skip to content

Feature: Feedback page #49

@FadyGergesRezk

Description

@FadyGergesRezk

Implement the Feedback page under /feedback.

Priority: P1

API endpoints used

Method Endpoint Description
GET /feedback List all feedback (FeedbackSummary[])
POST /feedback Create feedback (FeedbackCreate)
GET /feedback/{feedback_id} Get feedback details (Feedback)
PATCH /feedback/{feedback_id} Update feedback (FeedbackPartialUpdate)
DELETE /feedback/{feedback_id} Delete feedback

Tasks

  • Add src/features/feedback/api/queries.ts with useListFeedback and useGetFeedback hooks using TanStack Query; expose query options for the route loader
  • Add src/features/feedback/api/mutations.ts with useCreateFeedback, useUpdateFeedback, and useDeleteFeedback hooks; on success invalidate feedbackListQueryOptions
  • Add src/features/feedback/api/query-keys.ts for structured query keys
  • Wire a React Router v7 loader on the /feedback route that calls queryClient.ensureQueryData(feedbackListQueryOptions())
  • Add Zod schema for FeedbackCreate and FeedbackPartialUpdate derived from the generated types in src/api.ts
  • Add Zustand slice for UI state only: selected feedback ID, detail sheet open/closed
  • Build a feedback list view (shadcn/ui Table with columns: event, member, creator, created_at)
  • Add a detail Sheet showing the full feedback text
  • Add a "New Feedback" Dialog with a React Hook Form + Zod validated form for FeedbackCreate (required: event, member, feedback)
  • Support edit (PATCH) and delete with confirmation from the detail Sheet

Acceptance criteria

  • Feedback list loads before the page renders (via loader prefetch)
  • Creating, editing, and deleting feedback reflects in the list without a full page reload
  • Form validates required fields (event, member, feedback) before submitting and shows inline errors
  • Loading, empty, and error states are visible in list/detail views

Metadata

Metadata

Assignees

No one assigned

    Labels

    clientIssue regarding the client frontendenhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions