https://github.com/raphaeldiscky/go-bank
Go-based web app with clean architecture
https://github.com/raphaeldiscky/go-bank
aws-ecr aws-rds aws-sdk clean-architechture docker gin go grpc kubernetes paseto postgres redis sqlc swagger viper
Last synced: about 1 month ago
JSON representation
Go-based web app with clean architecture
- Host: GitHub
- URL: https://github.com/raphaeldiscky/go-bank
- Owner: raphaeldiscky
- Created: 2023-08-11T06:27:03.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-05-11T04:52:46.000Z (10 months ago)
- Last Synced: 2025-05-11T05:24:21.120Z (10 months ago)
- Topics: aws-ecr, aws-rds, aws-sdk, clean-architechture, docker, gin, go, grpc, kubernetes, paseto, postgres, redis, sqlc, swagger, viper
- Language: Go
- Homepage:
- Size: 34 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Go Bank
This application is primarily intended for exploring technical concepts. My goal is to experiment with different technologies, software architecture designs, and all the essential components involved in building a monolithic-based application in Golang.
## Features
- Building RESTful APIs using the `Gin` framework for handling HTTP requests
- Leveraging `gRPC` for efficient internal service-to-service communication
- Secure authentication using `PASETO` tokens and `JWT`
- Asynchronous task processing with `Redis` and `Asynq` for background processing
- Reliable database operations with `PostgreSQL` and `pgx` driver
- Type-safe database queries with `SQLC`
- Database migrations using `golang-migrate`
- Input validation using `go-playground/validator`
- Structured logging with `zerolog`
- Configuration management with `Viper`
- Testing with `testify` for assertions and `gomock` for mocking
- Containerized deployment with `Docker` and `docker-compose`
- Deploying to production environments using `Kubernetes` on `AWS EKS`
- Automatic SSL/TLS certificate management with `cert-manager` and `Let's Encrypt`
- CI/CD pipeline with `GitHub Actions`
## Technologies - Libraries
Core Framework
- **[gin-gonic/gin](https://github.com/gin-gonic/gin)** - High-performance HTTP web framework
- **[grpc-ecosystem/grpc-gateway](https://github.com/grpc-ecosystem/grpc-gateway)** - gRPC to JSON proxy
Database & Migration
- **[jackc/pgx](https://github.com/jackc/pgx)** - PostgreSQL driver and toolkit
- **[golang-migrate/migrate](https://github.com/golang-migrate/migrate)** - Database migrations
- **[sqlc-dev/sqlc](https://github.com/sqlc-dev/sqlc)** - Type-safe SQL query builder
Validation
- **[go-playground/validator](https://github.com/go-playground/validator)** - Go Struct and Field validation
Authentication & Security
- **[o1egl/paseto](https://github.com/o1egl/paseto)** - Platform-Agnostic Security Tokens
- **[dgrijalva/jwt-go](https://github.com/dgrijalva/jwt-go)** - JSON Web Tokens
- **[golang/crypto](https://github.com/golang/crypto)** - Cryptographic functions
Task Processing
- **[hibiken/asynq](https://github.com/hibiken/asynq)** - Distributed task queue
- **[redis/go-redis](https://github.com/redis/go-redis)** - Redis client
Logging
- **[rs/zerolog](https://github.com/rs/zerolog)** - Zero-allocation JSON logger
Testing & Mocking
- **[stretchr/testify](https://github.com/stretchr/testify)** - Testing toolkit
- **[uber-go/mock](https://github.com/uber-go/mock)** - Mocking framework
Documentation
- **[Swagger](https://swagger.io/)** - API documentation with static files for Swagger UI
- **[DBML](https://www.dbml.org/)** - Database Markup Language for visualizing database schema
Configuration & Environment
- **[spf13/viper](https://github.com/spf13/viper)** - Configuration solution
Deployment & DevOps
- **[AWS EKS](https://aws.amazon.com/eks/)** - Managed Kubernetes service
- **[Kubernetes](https://kubernetes.io/)** - Container orchestration
- **[Docker](https://www.docker.com/)** - Container platform
- **[Nginx Ingress Controller](https://kubernetes.github.io/ingress-nginx/)** - Kubernetes ingress controller
- **[cert-manager](https://cert-manager.io/)** - Certificate management for Kubernetes
- **[Let's Encrypt](https://letsencrypt.org/)** - Free SSL/TLS certificates