This is a simple book search application that allows users to search for their favorite books. The data is powered by the Google Books API. The frontend of the application is built using Next.js, a powerful React framework, and the backend is built using FastAPI, a modern, fast (high-performance), web framework for building APIs with Python 3.6+.
- Search for books.
- View book details. (Redirect to preview url from the Google Books API)
- Powered by Google Books API.
- Next.js on the frontend.
- FastAPI on the backend.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Node.js and npm (download here)
- Python 3.6+ (download here)
- Python venv (installation guide)
-
Clone the repository:
git clone https://github.com/RabiRoshan/find-a-read.git
-
Navigate into the cloned repository:
cd find-a-read
-
Install the frontend dependencies:
cd frontend npm install
-
Setup and activate the Python virtual environment:
cd ../backend python3 -m venv env source env/bin/activate
-
Install the backend dependencies:
pip install -r requirements.txt
-
Start the frontend server:
cd frontend npm run dev
-
In a new terminal, start the backend server:
cd backend source env/bin/activate uvicorn main:app --port 5000 --reload
Now, the frontend server should be running at http://localhost:3000
and the backend at http://localhost:5000
.
- Setup frontend with Next.js
- Setup backend with FastAPI
- Connect to Google Books API
- Implement book search feature
- Utilize query params in the frontend app as well
- Make the app responsive accross all the size(s)
- Implement Infinite scroll load feature with Loading Card Skeleton (Advanced Styling)
- Show loading indicator when search term changes
- Write tests for the app(s)
- Implement book details view
- Implement user authentication
- Implement user favourite(s) feature
- Dockerize the app(s)
- Deploy on aws
- Setup CI/CD
- Create a Dockerfile for both frontend and backend.
- Build and push the Docker images to Amazon Elastic Container Registry (ECR).
- Create a new task definition on Amazon ECS with both the Docker images.
- Create a new cluster on ECS.
- Create a new service within the cluster using the task definition.
- Update the security group to give sufficient inbound network access.
Please visit: http://50.19.195.183:8080/
This project is licensed under the terms of the MIT license. See the LICENSE file for details.