The challenge was to build out this product feedback application and get it looking as close to the design as possible. Users should be able to:
- View the optimal layout for the app depending on their device's screen size
- See hover states for all interactive elements on the page
- Create, read, update, and delete product feedback requests
- Receive form validations when trying to create/edit feedback requests
- Sort suggestions by most/least upvotes and most/least comments
- Filter suggestions by category
- Add comments and replies to a product feedback request
- Upvote product feedback requests
- Bonus: Keep track of any changes, even after refreshing the browser (
localStorage
could be used for this if you're not building out a full-stack app)
- Suggestions page
- Only product feedback requests with a status of
suggestion
should be shown on the Suggestions page.
- Only product feedback requests with a status of
- Roadmap
- Feedback requests with a status of
planned
,in-progress
, orlive
should show up on the roadmap, and should be placed in the correct column based on their status. - Columns should be ordered by upvote totals.
- Feedback requests with a status of
- Creating a product request
- When creating a new piece of feedback, an ID needs to be assigned which increments the current highest product request ID by 1.
- The default status for a new piece of feedback is
suggestion
. This places it on the Suggestions page.
- Editing feedback
- If a piece of feedback has its status updated to
planned
/in-progress
/live
it moves through to the roadmap and should show up in the correct column based on its new status.
- If a piece of feedback has its status updated to
- Add comments/replies
- Use the data from the
currentUser
object in thedata.json
file to populate the user data for any new comments or replies. - Any comment/reply can have a maximum of 250 characters.
- Use the data from the
This project is built with:
- React.js
- Tailwind CSS