This project is a test assignment for a company. It is a high-performance JSON viewer and editor that allows users to load, view, and manipulate large JSON data files without compromising the responsiveness of the user interface. The application leverages the power of Web Workers for handling data-intensive operations such as sorting and filtering, ensuring that the main JavaScript thread remains unblocked and the user experience stays smooth.
- Load Large JSON Files: Easily upload and view JSON files containing thousands or even millions of entries.
- Real-Time Filtering and Sorting: Use intuitive tools to filter and sort JSON data by various fields.
- Web Worker Integration: All heavy operations like sorting and filtering are offloaded to Web Workers, keeping the main thread free for UI rendering and interaction.
- Inline Editing: Edit JSON entries inline with simple input elements, supporting strings, numbers, dates, and booleans.
- React: For building the user interface.
- TypeScript: Ensures type safety and improves code quality.
- Redux Toolkit: Manages state effectively across the application.
- Web Workers: Offloads intensive data operations to keep the main thread responsive.
- CSS Modules: Provides scoped CSS for component-based styling.
Follow these steps to get the project up and running locally:
-
Clone the repository:
git clone https://github.com/vdontsov/json-viewer-and-parser cd json-viewer-and-parser
-
Install dependencies:
npm install
-
Start the development server:
npm start
The application will be available at
http://localhost:8000
.
- Load a JSON File:
- Click the "Upload JSON" button and select a JSON file to load it into the viewer.
- View and Navigate:
- Scroll through the loaded data and use the pagination controls if applicable.
- Filter and Sort:
- Use the toolbar to filter or sort the data based on the available fields.
- Edit Data Inline:
- Click the edit icon next to a data entry to modify its value directly within the application.
- Export Data:
- Click the "Export JSON" button to download the modified JSON data.
This project is licensed under the MIT License.