This project is an admin dashboard to list book records in a tabular format. The data is populated from the Open Library API. The dashboard includes pagination, sorting, search, and the ability to download current results in CSV format.
-
Data Fetching from API
- Utilizes the Open Library API to fetch book records.
-
Table Columns
titleauthor nameratings averagefirst publish yearsubjectauthor birth dateauthor top work
-
Pagination
- Default: 10 books per page
- Options to change to 50 or 100 books per page
-
Sorting
- Ascending and descending sort on publish year
-
Search by Author
- Search books by author's name
-
CSV Download
- Download the current table results in CSV format
-
Error Handling
- Utilizes
react-error-boundaryfor error handling
- Utilizes
-
Loading Animation
- Utilizes
react-loadingfor loading animations
- Utilizes
- ReactJS
- Tailwind CSS
- Axios
- react-loading
- react-error-boundary
Ensure you have the following installed on your local machine:
- Node.js
- npm (Node Package Manager)
-
Clone the repository
git clone https://github.com/9582anupam/OpenLibraryManager -
Navigate to the project directory
cd OpenLibraryManager -
Install the dependencies
Axios:
npm install axiosoryarn add axiosReact Error Boundary:
npm install react-error-boundaryoryarn add react-error-boundaryReact Loading:
npm install react-loadingoryarn add react-loading
To start the application, run:
npm start
This will run the app in development mode. Open http://localhost:3000 to view it in the browser.
The application can be hosted online using platforms like Vercel, Netlify, or GitHub Pages.
- The dashboard displays a table of books with the specified columns.
- Use the pagination controls to navigate through pages.
- Use the sorting controls on each column header to sort the data.
- Use the search bar to find books by author name.
- Click the "Download CSV" button to download the current table data in CSV format.
srccomponentsBookTable.js: Component to display book records in a tableCreateCSV.js: Component to handle CSV downloadsDashboardText.js: Component for dashboard header textPaginationComponent.js: Component for pagination controlsRecordsPerPage.js: Component to change the number of records per pageHome.js: Component contain all other components and main functionalitiesLoading.js: Component to how loading animation
App.js: Main application componentApp.css: Emptyindex.js: Entry point of the applicationindex.css: Global styles using Tailwind CSS
publicindex.html: main HTML filefav.svg: favicon image
Contributions are welcome! Please fork the repository and submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
Name - Anupam
Repository Link: https://github.com/9582anupam/OpenLibraryManager
Live Link: https://open-library-manager.vercel.app/