This is a solution to the Product feedback app challenge on Frontend Mentor. Frontend Mentor challenges help you improve your coding skills by building realistic projects.
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
- Keep track of any changes, even after refreshing the browser
- Solution URL: Frontend Mentor Solution
- Live Site URL: https://product-feedback-app-fawn.vercel.app
- Next.js - React framework with SSR
- MongoDB - For database
- Prisma - ORM for mongodb
- TailwindCSS - For styles
- Recoil - For state management
- TypeScript
Using Next.js with Prisma and MongoDB was a new experience for me and I learned a lot from it.
export async function getServerSideProps() {
const feedbackList = await prisma.feedback.findMany();
return {
props: { feedbackList },
};
}
Planning to add authintication using auth0 and add more features like search and more filters
- Best practice for instantiating PrismaClient with Next.js - Instantiating to avoid creating multiple instances of PrismaClient in development mode.
- How to Run Async Await in Parallel with Javascript - This is an amazing article which helped me to decrease the time of updating two collections in the database by running them in parallel.
- Frontend Mentor - @Abdelwahab07
- Twitter - @Abdelwahab_07