This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Inter, a custom Google Font.
Assumptions made during development:
-
File Upload:
- Drag-and-drop functionality for PDF files.
- Manual file upload option.
- Displays file size limit ("Limit 25 MB per file").
- Files stored locally in the browser's local storage.
-
Local Storage Implementation:
- Uploaded files and their metadata are saved locally.
- Persistent data across page reloads.
- Efficient retrieval of stored files and metadata.
-
Coursework Details Form:
- Dropdowns for selecting "Coursework Type" and "Subject".
- Text input for the essay title.
- Form data is stored locally along with the associated file.
-
Evaluation Display:
- Dummy data is used for evaluation purposes.
- Shows overall score with a circular progress indicator.
- Breakdown of scores by criteria (A, B, C).
- Evaluation date displayed.
- Evaluation results are stored and retrieved locally.
-
Coursework List:
- Displays previously uploaded coursework from local storage.
- Shows relevant details such as title, subject, word count, etc.
-
Animations: Smooth transitions between different states.
-
Micro-interactions: For enhanced user feedback.
-
Mock API Integration: Mock API calls for simulating server-side persistence (using Mock API from - https://dummyjson.com/).
The biggest challenge for me was integrating the PDF Viewer library pdfjs, the configuration of the library on NextJS is particularly difficult since the react-pdf library latest version is not compatible with pdfjs latest version. This lead to me trying a lot of combinations until I got it to work.
Other than that I faced minor issues while setting up Zustand.