go-gavel
Evolution of eAuction towards enterprise architecture
A personal project rebuilding an auction application in Go. Current work focuses on user registration and sign-in components.
Development in progress- Who is it for?
- Developers exploring service-based application architecture
- My contribution
- Personal project · Software development
- Status
- Development in progress
The need to solve
I am revisiting eAuction using Go services and explicit contracts, separating authentication and persistence responsibilities.
What it enables
User registration, password hashing and token components have been developed. This is an ongoing architecture project I work on in my spare time.
What I built
I developed Protobuf contracts, gRPC user registration, a PostgreSQL repository and JWT/Redis token components in a Go monorepo.
Explore development details
For readers interested in the technical approach: workflows, technologies and implementation decisions.
How does the process work?
Below is the current user-registration path in my ongoing project. Token components are shown separately; a complete end-to-end auction is still a development goal.
Main flow
Build the Protobuf request
Prepare registration data according to the inter-service Protobuf contract.
Receive it in the gRPC service
The auth-service adapter passes the request to the registration use case.
Validate registration data
Check first name, last name, email and password against application rules.
Hash the password
Create a bcrypt password hash; do not persist the plaintext password.
Persist through the repository
A pgx repository provides PostgreSQL persistence.
Return the registration result
The gRPC response carries status, a message and any field-validation errors.
Alternative and supporting processes
If validation fails
- Build field errors
Add invalid fields to the use-case validation result.
- Stop registration
Return the error information without persisting a user.
Separate authentication components
- Access / refresh tokens
JWT access and refresh token components own authentication responsibilities separately from the registration use case.
- Token invalidation
Redis blacklist and TTL support token-invalidation components.
The approach
- Reworking eAuction towards enterprise architecture in a Go microservices monorepo, separating domain, use-case and repository boundaries with Clean Architecture.
- Developed Protobuf service contracts and a gRPC user-registration service with validation, bcrypt password hashing and a PostgreSQL/pgx user repository.
- Developed JWT access/refresh token and Redis blacklist/TTL components; worked on Docker builds for the auth service. Continuing development in my spare time.
Technologies
- Go
- gRPC
- Protobuf
- PostgreSQL / pgx
- Redis
- JWT
- Docker