- Develop a single-page application (SPA) library with a list of books and authors using ReactJS.
- No backend development is required. The application starts without any data, and books are added and stored in the application's store within the browser session.
-
Book List
- Filter books by author
- Dropdown list with single selection of available authors
- Apply button - applies the filter with page refresh
- Table of books sorted by title, with columns:
- ID
- Title
- Author(s)
- Publication Year
- Edit button - navigates to the book editing page
- Delete button - deletes the book
- Add button - navigates to the book addition page
- Filter books by author
-
Add/Edit Book Page
- Title field
- Publication Year field
- Authors field - multiple selection from available authors
- Add/Save button
-
Author List Page
- Table of authors sorted alphabetically, with columns:
- ID
- Full Name
- Number of Books
- Edit button - navigates to the author editing page
- Delete button - deletes the author
- Add button - navigates to the author addition page
- Table of authors sorted alphabetically, with columns:
-
Add/Edit Author Page
- Full Name field
- Add/Save button
- A book can have multiple authors
- An author can have multiple books
- Different pages should have different URLs
- Use Formik package with yup validation for forms, all form fields are mandatory
- Choose between Redux, MobX, or MobX-state-tree for state store
- TypeScript usage is preferred
- Use functional components only, no class components allowed
- Mandatory use of React hooks and custom hooks
- Visual appearance (design/layout) will not be considered, default browser styles or Bootstrap will suffice
- Provide a Git repository link where we can clone, install, and open the application locally in a browser.