A collection of Go experiments, proof-of-concepts, and learning projects exploring various aspects of the Go programming language and its ecosystem.
A production-ready microservices architecture demonstrating:
- JWT-based authentication with role-based access control (RBAC)
- Traefik load balancer with rate limiting (DDoS protection)
- Docker Compose with multiple replicas (horizontal scaling)
- Decoupled authentication/authorization pattern
- Health checks and monitoring
Tech Stack: Traefik, JWT, Docker Compose, microservices architecture
See auth/README.md for detailed documentation.
- auth/ - Complete microservices auth system with JWT, RBAC, and load balancing
- http_server/ - HTTP server implementations and patterns
- api/ - API development and benchmarking
- api_book/ - API examples from books/tutorials
- proxy/ - Reverse proxy implementations
- benchmarks/ - Performance benchmarks and comparisons
- n-producers_n-consumers/ - Concurrency patterns
- crawler/ - Parallel vs serial web crawling
- thread-pool/ - Thread pool implementations
- ch_block/ - Channel blocking examples
- load_balancer/ - Load balancing algorithms (round-robin)
- load-shedding/ - Load shedding patterns
- rate_limiter/ - Rate limiting implementations
- event_bus/ - Event bus pattern
- pub-sub/ - Publish-subscribe pattern
- gorm/ - GORM ORM examples
- bigquery/ - Google BigQuery integration
- db-vector/ - Vector database experiments
- lru/ - LRU cache implementation
- ctx/ - Context package examples (cancellation, signals)
- shut-down/ - Graceful shutdown patterns
- wait_ready/ - Ready/health check implementations
- file/ - File parsing and processing
- split_csv/ - CSV file splitting utilities
- profile/ - Profiling and performance analysis
- pprof-pyroscope/ - Continuous profiling with Pyroscope
- err/ - Error handling patterns
- stack/ - Stack implementation
- iterator/ - Iterator patterns
- matrix/ - Matrix operations
- codility/ - Coding challenges
- search/ - Search algorithms
- strings/ - String manipulation
- bitwise/ - Bitwise operations
- binary-protocol/ - Binary protocol implementations
- funcs/, funcs2/, funcs3/ - Function patterns
- options/ - Options pattern
- viper_config/ - Configuration with Viper
- log/ - Logging patterns
- ticker/ - Ticker examples
- scheduler/ - Task scheduling
- notifications/ - Notification systems
- queue_send_emails/ - Email queue implementation
- health-check/ - Health check endpoints
- obrc/ - One Billion Row Challenge
- crdt/ - Conflict-free Replicated Data Types
- clone/ - Deep cloning patterns
- refresh/ - Auto-refresh patterns
- assemble-file/ - File assembly utilities
- fun/ - Various fun projects and challenges
Most projects are self-contained and can be run individually:
# Navigate to a project directory
cd <project-name>
# Run the project
go run main.go
# Or run tests
go test ./...For projects with specific requirements, check the project's directory for a README or documentation.
- Go 1.20 or higher
- Docker and Docker Compose (for containerized projects)
These are personal experiments and learning projects. Feel free to explore and learn from them!
This is a personal learning repository.