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.
- ✅ 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 andJWT
- ✅ Asynchronous task processing with
Redis
andAsynq
for background processing - ✅ Reliable database operations with
PostgreSQL
andpgx
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 andgomock
for mocking - ✅ Containerized deployment with
Docker
anddocker-compose
- ✅ Deploying to production environments using
Kubernetes
onAWS EKS
- ✅ Automatic SSL/TLS certificate management with
cert-manager
andLet's Encrypt
- ✅ CI/CD pipeline with
GitHub Actions
- gin-gonic/gin - High-performance HTTP web framework
- grpc-ecosystem/grpc-gateway - gRPC to JSON proxy
- jackc/pgx - PostgreSQL driver and toolkit
- golang-migrate/migrate - Database migrations
- sqlc-dev/sqlc - Type-safe SQL query builder
- go-playground/validator - Go Struct and Field validation
- o1egl/paseto - Platform-Agnostic Security Tokens
- dgrijalva/jwt-go - JSON Web Tokens
- golang/crypto - Cryptographic functions
- hibiken/asynq - Distributed task queue
- redis/go-redis - Redis client
- rs/zerolog - Zero-allocation JSON logger
- stretchr/testify - Testing toolkit
- uber-go/mock - Mocking framework
- Swagger - API documentation with static files for Swagger UI
- DBML - Database Markup Language for visualizing database schema
- spf13/viper - Configuration solution
- AWS EKS - Managed Kubernetes service
- Kubernetes - Container orchestration
- Docker - Container platform
- Nginx Ingress Controller - Kubernetes ingress controller
- cert-manager - Certificate management for Kubernetes
- Let's Encrypt - Free SSL/TLS certificates
The application follows a monolithic architecture pattern with some clean architecture principles applied.