You are tasked to develop a web application that allows users to upload a PDF file and extract certain pages from the PDF to create a new PDF. The user should be able to select which pages they want to include in the new PDF.
- Implement a simple form to upload a PDF file. The form should include validation to ensure that only PDF files are uploaded.
- Once the file is uploaded, display a visual representation of all pages in the PDF.
- Allow users to select which pages they want to extract from the original PDF. This can be achieved through checkboxes or a similar UI element associated with each page.
- Include a button or functionality to create the new PDF based on the selected pages. Once completed, offer a download link to the user for the newly created PDF.
- All pages should be responsive and should work from mobile devices.
- Create a REST API to handle the upload of the PDF file and store it on the server.
- Create a REST API to retrieve the stored PDF file for display.
- Implement a REST API to extract the selected pages from the original PDF and create a new PDF. You can use any PDF library to achieve this in the Node.js framework you use.
- Ensure all APIs work correctly and handle potential errors.
- Add frontend and backend tests.
- Add a live hosted version of the app
- Implement user authentication so that each user can have their own set of PDF files.
- Allow the user to rearrange the order of selected pages in the new PDF.
- Submit your work by filling this form with a link to your repository.
- Add clear instructions on how to run your code in the README
- Add screenshots of various states of your app
- Correctness: Does the application work as expected?
- Code Quality: Is the code well-organized, commented, and easy to understand?
- User Experience: Is the application easy to use and intuitive?
- Error Handling: How does the application handle potential errors?
- Documentation: Is the code and the setup process well-documented?
- This task should be individual effort. Do not collaborate with others.
- Do not copy code directly from ChatGPT. General knowledge and concepts can be referred to.
- Code from existing sources, including open-source projects or online tutorials, should not be used. The work should be original.
- Showcase your problem-solving abilities, creativity and personal skills when completing this task.