― A Robust Backend System for a Personal Book Library
Librakeeper Server is a backend system designed for managing a personal book library. It provides a robust set of features, including user authentication, book management, bookshelf organization, and advanced search capabilities. The system is built using a microservices architecture with asynchronous processing, ensuring efficient and scalable operations.
- User Authentication: Secure authentication using Firebase.
- Book Management: Add, view, update, and delete books with detailed information (ISBN, title, author, publishing, description, cover image, and shop).
- Bookshelf Organization: Create and manage personalized bookshelves to categorize books.
- Search Functionality: Find books by ISBN using simple (local database) or advanced (gRPC-based) search.
- Microservice Architecture: Leverage gRPC for efficient communication between the server, searcher, and searcher-agent microservices.
- Asynchronous Processing: Utilize RabbitMQ for asynchronous book searching and processing.
- Persistent Storage: Store book and bookshelf data in a MongoDB database.
- Containerization: Easy deployment and setup using Docker and Docker Compose.
For detailed information about the Librakeeper Server API, including available endpoints, data structures, and authentication requirements, please refer to the comprehensive API documentation.
The system follows a microservice architecture, with components communicating via gRPC and RabbitMQ.
graph TB
Server[Librakeeper Server] -- gRPC --> Searcher[Book Searcher Service]
Searcher -- RabbitMQ --> SearcherAgent[Book Searcher Agent]
SearcherAgent -- HTTP --> Websites[(External Websites)]
Server -- MongoDB --> Database[(MongoDB Database)]
Searcher -- MongoDB --> Database
SearcherAgent -- MongoDB --> Database
Here's how to set up and run Librakeeper Server locally:
- Go: https://golang.org/
- Docker: https://www.docker.com/
- Docker Compose: https://docs.docker.com/compose/
- MongoDB: https://www.mongodb.com/
- Configuration Files:
- Configure the server, searcher, and searcher-agent microservices using the provided YAML configuration files (
e.g.,
config/server/docker-local.yaml
). - Update database connection details, RabbitMQ settings, and other relevant parameters in these files.
- Configure the server, searcher, and searcher-agent microservices using the provided YAML configuration files (
e.g.,
- Firebase Credentials:
- Obtain Firebase service account credentials (a JSON file).
- Place the credentials file in the
config/server
directory and reference it in the server's configuration file (auth.config_path
).
- Clone the Repository:
git clone https://github.com/your-username/librakeeper-server.git cd librakeeper-server
- Start Services:
docker-compose up -d
Once the services are up and running, the Librakeeper Server will be accessible at http://localhost:8080
.