This is a solution to the Invoice 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 invoices
- Receive form validations when trying to create/edit an invoice
- Save draft invoices, and mark pending invoices as paid
- Filter invoices by status (draft/pending/paid)
- Toggle light and dark mode
- 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)
- Semantic HTML5 markup
- Flexbox
- CSS Grid
- Desktop-first workflow
- React - JS library
- Next.js - React framework
- Next.js - React framework
- Styled Components - For styles
- react-hook-form - for form validation
- framer-motion - for animation
- redux-persist - persist and rehydrate a redux store.
- cypress - for e2e testing
- react-testing-library - for unit testing
- redux-toolkit - for state managment
- bcryptjs - for crypting
- Frontend Mentor - @aleksFedotov