Your job is to create a NextJS app which stores file details in the browsers local storage and keeps a history. Only the file meta deta is stored in the browser storage, the files itself won't be stored or uploaded.
- TypeScript NextJS Starter: Typescript NextJS Starter
- State Managment: Redux or MobX
- Styled Components: (if you like to style things): Styled Components
Main Screen
- Displays an upload dialog
- Once a file was dropped on the file upload dialog area it will dispaly the file name and a "Save File" and "Reset File" button
- Only PDF, DOCX, DOC are allowed
- Clicking "Save File" will persist the file meta data in the browsers local storage
- Clicking "Reset File" will reset the upload dialog
- List all previously saved files (if any) in a table
- Clicking on the "X" icon in the file list will remove the item and remove it from the browser storage
- The table contains filename, file size (in bytes, kilobytes, megabytes, gigabytes, terabytes) and the file format (extension without the dot)
- TypeScript
- React + State Management (Redux/MobX)
- Validation on forms
- Usage of modern js functionality (ES6+)
- Use the TypeScript NextJS Starter to get things going
- Clean code (run linters, prettier)
- A few tests
- App deployed to Vercel
- Conventional Commit Messages
- Gitflow Branch Naming
- Github Actions to run linting and tests
- How you split code for components
- How your store looks like and how you communicate with redux/mobx.
- Reusability of the components.
- Code repetitions and reusability (keep your code DRY and simple KISS).
- How and where you put your business logic.
- Code optimization and the solution's performance.
- Working in accordance with good practices in general.
- How you communicate with the browser storage API.
- Handling unexpected errors or potential exceptions.