This web application allows users to browse audiobooks, view details, and submit reviews and ratings. It features a responsive front-end interface and a RESTful API backend.
- Browse a list of audiobooks with basic details
- Filter audiobooks by genre, author, and rating
- View detailed information about individual audiobooks
- Submit reviews and ratings for audiobooks
- React.js
- Tailwind CSS
- Node.js
- Express.js
- MongoDB
The application follows a client-server architecture:
-
Frontend: A React application that provides the user interface. It communicates with the backend API to fetch and submit data.
-
Backend: An Express.js server that handles API requests, interacts with the database, and serves data to the frontend.
-
Database: MongoDB is used to store audiobook information, user reviews, and ratings.
The backend provides the following RESTful API endpoints:
-
GET /api/audiobooks
: Retrieve a list of audiobooks -
GET /api/audiobooks/:id
: Retrieve details of a specific audiobook -
POST /api/reviews
: Submit a new review- Body:
{ audiobookId, rating, review, userId }
- Body:
-
GET /api/reviews/:audiobookId
: Retrieve reviews for a specific audiobook
-
Backend Deployment:
- Set up a MongoDB database (e.g., MongoDB Atlas)
- Deploy the Node.js application to a hosting service (e.g., Firebase, Heroku, DigitalOcean)
- Set environment variables for database connection and other configurations
-
Frontend Deployment:
- Build the React application:
yarn build
- Deploy the built files to a static hosting service (e.g., Firebase, Netlify, Vercel)
- Configure the deployed frontend to use the backend API URL
- Build the React application:
Here are some screenshots of the application:
Browse audiobooks with filtering options
View detailed information about an audiobook
Submit a review for an audiobook
You can access a live demo of the application here: Audiobook Web App Demo
To run this project locally:
-
Clone the repository
-
Install dependencies in both client and server folder.
-
Start the server.
cd server
yarn client