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
Ginframework for handling HTTP requests - Leveraging
gRPCfor efficient internal service-to-service communication - Secure authentication using
PASETOtokens andJWT - Asynchronous task processing with
RedisandAsynqfor background processing - Reliable database operations with
PostgreSQLandpgxdriver - 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
testifyfor assertions andgomockfor mocking - Containerized deployment with
Dockeranddocker-compose - Deploying to production environments using
KubernetesonAWS EKS - Automatic SSL/TLS certificate management with
cert-managerandLet'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.