-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of github.com:hafizxd/micro-bank
- Loading branch information
Showing
1 changed file
with
15 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,17 @@ | ||
# Micro Bank | ||
An application with simple ideas about managing and transfer balance, with the purpose of learning all Go ecosystem and development flow correctly from start to end including Preventing DB Deadlock, Generating Query, Developing Web Server, Dockerizing, Implement CI/CD, Deploying to AWS, Containerization with Kubernetes, Expanse into Microservices with gRPC Protobuf, and Managing and Caching Jobs with Redis. | ||
Providing APIs for the frontend to do the following things: | ||
- Create and manage bank accounts. | ||
- Record all balance changes to each of the accounts. | ||
- Perform a money transfer between 2 accounts. | ||
|
||
### Project Structure : | ||
- api: code that handles web server including router, handler, middleware | ||
- db: all interaction with database including migration, mocking, and sqlc query | ||
- token: responsible for generating and validating access token | ||
- util: utilities that would be used within application | ||
With the purpose of learning different topics regarding Backend Development such as: | ||
- Understanding the DB isolation levels | ||
- Use Docker for local development | ||
- Build RESTful HTTP APIs using Gin. This includes loading app configs, mocking DB unit tests, handling errors, authenticating users, authorizing with JWT and PASETO, and managing refresh token | ||
- Build app with Docker and deploy it to a production Kubernetes cluster on AWS. Also using GitHub Action to automatically build and deploy the image to the EKS cluster | ||
- Build gRPC APIs | ||
- Embedding Swagger as part of the backend service | ||
- Writing logger HTTP middlewares and gRPC interceptors | ||
- Build asynchronous processing with background workers and Redis as its message queue | ||
- Send emails to users via Gmail SMTP server | ||
- Writing unit tests for gRPC services that might involve mocking multiple dependencies at once |