This application uses goodreads api to look for books by Title, Author or Isbn code.
This project was bootstrapped with create-react-app and deployed live at
https://react-book-app-with-express.herokuapp.com
Prerequisites: You need to have Node + NPM installed.
Clone the repo:
https://github.com/yashwantsinghzala/CreateBookSearchAppWithExpress.git
Install dependencies:
npm install
Note:
- run the npm install to root of your directory in order to install express dependency.
- run the npn install to root of client directory in order to install react app dependency. example: cd CreateBookSearchAppWithExpress/client npm install
Starting the application in development mode:
npm start
- run the npm start to root of your directory in order to install express dependency.
- run the npn start to root of client directory in order to install react app dependency. example: cd CreateBookSearchAppWithExpress/client npm start
To build the production assets, run
cd CreateBookSearchAppWithExpress/client build
cd CreateBookSearchAppWithExpress/client npm test
Note: Written unit test cases for all reducer , some of the actions and react component to ensure it renders correctly on ui .nd
- Search for books by title, author, or ISBN. (example: if we search by keyword "Harry", it displays 10 related books on it)
- Displays search results in bootstrap cards.
- Displays error inline if it fails for any reason.
- Displays only title, author, and link to goodreads page.
- See the description and rating, and other details by clicking on individual result.
- Used redux and redux thunk to maintain the data in store and manage it across the containers with in the app.
- Components consist of dump ui component which needs data which is provided by the container component which is connected through the store.
- Used bootstrap for css modules .
- Used express to make cross domain api request.
- Error handling could have been done in more detail.
- More test cases related to asynchronous action and api testing.
- Could have implemented separate loader for book selected ,although it is already done but currently it loads whole page .
- Could have introduced error boundries.
- Slidly restructure the rendering part of the app.
- Could have give some of the more feature to app while showing selected book with good ui experience.