Docker compose up
http://localhost:8080/swagger
- I've done a lot of work on the database layer. This is important, as the database is the foundation of any application.
- I've also implemented a number of security features, such as JWT and PASETO tokens, authentication middleware, and authorization rules. This is important for ensuring the security of your application.
- I've used a number of different technologies, such as Go, Postgres, Gin, gRPC, Swagger, and Redis. This shows my expertise with a wide range of technologies and can use them to build a production-ready application
- I've also automated a number of tasks, such as building and pushing Docker images, deploying to Kubernetes, and issuing TLS certificates. This shows that I'm using modern DevOps practices to build and deploy your application.
- Designed a database schema and generated SQL code using diagram.io
- Implemented migrations
- Generated CRUD code for Golang using SQL for Postgres
- Efficiently handled database transaction locks and deadlocks
- Came up with an efficient strategy for deadlock avoidance in Golang
- Set up Github Actions for Golang + Postgres to run automated tests
- Implemented a RESTful HTTP API using Gin
- Ran a mock database for testing the HTTP API in Go and achieved 100%
- test coverage
- Implemented a transfer money API with a custom parameters validator
- Implemented a JWT and PASETO token
- Implemented a user session manager with refresh token
- Built a minimal Golang Docker image using a multi-stage Dockerfile
- Introduced gRPC to the project
- Defined a gRPC API and generated Go code from protobuf
- Implemented the Golang gRPC server for the API
- Integrated the gRPC API to create and manage users
- Made the API compatible with both HTTP and gRPC requests
- Automated the generation and serving of Swagger documentation from the
- Go server using OpenAPI
- Implemented a validator for gRPC parameters and sent friendly error messages
- Added authorization to protect the gRPC API
- Implemented structured logging for the C APIs
- Implemented a HTTP logger middleware
- Integrated a background worker with Redis and asynq for the email server
- Handled all possible errors and printed logs for Asynq
- Implemented the send and verification email with Gomail
- Wrote tests for the gRPC API that requires authentication
- Implemented automatic building and pushing of the Docker image to AWS ECR with Github Actions
- Created a Postgres database on AWS RDS
- Stored and retrieved production secrets with AWS Secrets Manager
- Created an EKS cluster on AWS
- Deployed the API_BANK to a Kubernetes cluster on AWS EKS
- Registered a domain and set up a record in Route53
- Used ingress to route traffic to different services in Kubernetes
- Implemented an automatic issuance of TLS certificates in Kubernetes with Let'sencrypt
- Finally, automated deployment to the internet (EKS) with Github Actions
To use my project, you can follow these instructions:
- Clone the repository.
- Install the dependencies.
- Run the project.
Docker compose up
Project doc
http://localhost:8080/swagger