This Git repository contains a Golang-based application that provides functionality for user registration, authentication, product management, and order placement. The application utilizes technologies such as Golang, Docker, gRPC, JSON, PostgreSQL, Makefile, and Git.
-
User Registration and Authentication:
- Users can register and authenticate to access the application.
-
Product Management:
- Users can add products to the system.
-
Retrieve Products by ID:
- Users can retrieve product information using product IDs.
-
Order Placement:
- Users can place orders through the system.
- Golang: The primary programming language used for development.
- Docker: Containerization platform for packaging the application and its dependencies.
- gRPC: Remote procedure call framework for communication between services.
- JSON: Data interchange format for transmitting data between the client and server.
- PostgreSQL: Relational database for storing application data.
- Makefile: Used for automation and simplifying build processes.
- Git: Version control system for tracking changes in the project.
Before proceeding with the installation, ensure that Docker is installed on your system. You can install Docker by following the instructions on the official Docker website: Install Docker
Additionally, Golang and gRPC need to be installed. Please follow the instructions for Golang installation: Install Golang
To install gRPC, run the following command:
go get -u google.golang.org/grpc
Follow these steps to run the application:
-
Generate gRPC Protobuf Code:
make init
-
Generate gRPC Protobuf Code:
make proto
-
Run Tests:
make test
-
Create PostgreSQL Database:
make postgresCreateDB
-
Build and Run Docker Container:
make dockerRun
These steps will set up and run the application, making it accessible for use.
This project includes an API gateway that processes JSON requests from the client, transforms them into gRPC requests, and forwards them to the appropriate services. Each service interacts with the database to fulfill the client's request.
- Ensure that all necessary dependencies are installed and configured before running the application.
- For any issues or improvements, please open an issue or submit a pull request.