An open API service indexing awesome lists of open source software.

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

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