goGavel is a gRPC-based online auction platform built with Go, structured as a microservices monorepo. This project is developed as a learning exercise to explore microservices architecture, gRPC communication, and scalable system design with Go.
The goal of goGavel is to provide a real-time auction system where users can place bids, manage their auctions, and experience a high-performance distributed system. This project focuses on best practices in Go, efficient inter-service communication with gRPC, and clean architecture principles.
- π gRPC - High-performance RPC framework
- π¦ Protobuf - Efficient data serialization
- π³ Docker - Containerized development and deployment
- π PostgreSQL - Robust data persistence
- π§ Makefile - Simplified build automation
- βοΈ Environment Variables - Flexible configuration
- π― Clean Architecture - Maintainable and testable code
- Auth - User authentication and authorization
- Auction - Auction management
- Bid - Real-time bidding
- Payment - Payment processing
... and more to come!
go-gavel-microservices/
βββ proto/ # Protobuf files
β βββ auth/
β βββ common/ # Shared messages and enums
β βββ ...
β βββ go.mod
βββ services/ # Service implementations
β βββ auth/
β β βββ go.mod
β β βββ api/ # gRPC API handlers
β β βββ cmd/
β β β βββ main.go # Service entry point
β β βββ docs/ # API documentation
β β βββ internal/
β β βββ domain/ # Domain models
β β βββ usecase/ # Business logic
β β β βββ command/
β β β βββ query/
β β βββ repository/ # Data access layer
β β βββ events/ # Event handlers
β β βββ publisher.go
β β βββ consumer.go
β βββ ...
βββ pkg/ # Shared packages
β βββ utils/ # Utility functions, validators, and helpers
β β βββ ...
β βββ errors/ # Custom error types
β β βββ ...
β βββ grpc/ # gRPC helpers, interceptors, and middleware
β β βββ ...
β βββ database/ # Database connection and query builder
β β βββ ...
β βββ kafka/ # Kafka producer and consumer
β β βββ ...
β βββ ...
β βββ go.mod
βββ build/ # Dockerfiles for building the services
β βββ base/ # Base builder image for all services includes Go + Protobuf + gRPC
β βββ auth/ # Auth service builder image
β βββ ...
βββ .envs/ # Environment variables
β βββ .local/ # Local development environment variables
β βββ ...
βββ scripts/ # Helper scripts
β βββ generate_protos.sh
β βββ ...
βββ Makefile
βββ .gitignore
βββ .dockerignore
βββ docker-compose.local.yml
βββ figures/ # Diagrams and images for documentation
β βββ ...
βββ LICENSE
βββ README.md
- Auth Service
- User authentication and authorization with JWT
- Role-based access control
- User profile management
- Auction Service
- Auction creation and management
- Real-time auction status updates
- Automatic auction completion
- Bid Service
- Real-time bid processing
- Bid validation and verification
- Historical bid tracking
- Payment Service
- Secure payment processing
- Multiple payment method support
- Transaction history
- Security
- JWT authentication
- Role-based access control (RBAC)
- API rate limiting
- Quality Assurance
- Unit tests
- Integration tests
- Load testing
- Documentation
- Development guidelines
Documentation coming soon...
This code repository is licensed under the MIT License. See LICENSE for more information.
If you have any questions or suggestions, feel free to reach out to me at [email protected].