Skip to content

A curated list of awesome collection of Go projects and resources

License

Notifications You must be signed in to change notification settings

DhanushNehru/Ultimate-Go-Resources

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

54 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Ultimate Go Resources

Ultimate Golang Resources

Ultimate Golang Resources - A curated list of collection of Go projects and resources  | Product Hunt

Join Our Discord Subscribe on YouTube Subscribe to Newsletter

πŸ“– Documentation

πŸ“š Learning Resources

πŸ“– Books

πŸŽ₯ Video Resources

πŸ“ Available Projects

  • cards: A simple Go program that defines a new custom type deck (a slice of strings) representing a deck of playing cards. It demonstrates creating, populating, and printing the deck using nested loops and receiver functions.

  • string_to_html: Converts a plain string into an HTML document using Go and writes the output to a file.

  • template_string_to_html: Defines an HTML template as a raw string in the Go file and renders it with inserted data.

  • template_pass_string_value_to_html: Passes a string value into an external HTML template and renders it dynamically using Go templates.

  • template_struct_data_to_html: Demonstrates how to pass structured data (using Go structs and slices) into an external HTML template and render dynamic content using Go’s text/template package.

  • template_with_custom_functions_to_html: Demonstrates how to register and use custom functions in Go templates to manipulate and display structured data dynamically.

  • template_with_pipelining: Demonstrates using function pipelines in Go templates to transform and render data step-by-step with custom functions.

  • template_safe_html_rendering: Demonstrates safe rendering of dynamic user input in Go templates using the html/template package, which automatically escapes potentially dangerous content to prevent XSS attacks.

  • tcp_hello_server: A simple TCP server in Go that listens on port 8080 and sends a greeting message to any client that connects. Demonstrates basic use of the net package for creating TCP servers and handling connections.

  • tcp_echo_server_with_concurrency: A concurrent TCP server in Go that listens on port 8080 and reads text input from clients line-by-line. Demonstrates handling multiple client connections using goroutines and reading data from network streams with bufio.Scanner.

  • tcp_echo_response_server: A concurrent TCP server in Go that listens on port 8080, reads input from clients line-by-line, and sends back a custom echoed response. Demonstrates bidirectional communication using bufio.Scanner and fmt.Fprintf, along with concurrent connection handling using goroutines.

  • tcp_rot13_server: A concurrent TCP server in Go that listens on port 8080, reads input from clients, converts it to lowercase, and sends back a ROT13-transformed response. Demonstrates text transformation, bidirectional communication using bufio.Scanner and fmt.Fprintf, and concurrent client handling using goroutines.

  • photo_blog: A simple web application in Go that allows users to upload image files via an HTML form, which are saved with a SHA1-hashed filename. Uploaded images are stored in the public/pics directory and displayed back to the user based on session-tracked cookies.

  • hmac_hash: A simple Go program that demonstrates generating an HMAC using SHA-256. It takes input strings (e.g., email addresses) and returns a secure, consistent hash using a secret key. Illustrates the use of crypto/hmac, crypto/sha256, and io.WriteString for keyed hashing.

  • base64_encoder: A simple Go program that demonstrates Base64 encoding and decoding of a plain text message using Go's encoding/base64 package. Shows how to convert strings to Base64 format and decode them back, with basic error handling using log.Fatalln.

  • json_marshal_vs_encode: A simple Go web server that demonstrates the difference between json.Marshal and json.Encoder. It defines a struct and shows how to convert it to JSON using both methods. Includes endpoints to serve basic HTML, marshal data to JSON, and encode data directly into the HTTP response, with proper headers and error handling.

  • json_unmarshal: A simple Go program that demonstrates how to parse a JSON string into nested Go structs using json.Unmarshal. It shows how to access nested fields, iterate over slices, and explains the importance of passing a pointer (&data) so the unmarshal operation modifies the original variable. Ideal for beginners learning how to handle JSON in Go.

  • crud_mongodb: A basic CRUD API built with Go and MongoDB that demonstrates how to connect to a MongoDB instance using the official Go driver. The project follows clean structuring with models, controllers, and routing logic, making it a great starting point for developers looking to build RESTful services with MongoDB as the database layer.

  • crud_postgres: A simple CRUD API built with Go and PostgreSQL that demonstrates how to connect to a PostgreSQL database using the database/sql package and lib/pq driver. The project uses a clean folder structure with separate models and controllers, and includes standard RESTful routes for creating, reading, updating, and deleting user records. Ideal for developers who want to learn how to build robust backend services with PostgreSQL as the relational data layer.

πŸ› οΈ Tools & Libraries

  • Gin - Fast HTTP web framework written in Go
  • Echo - High performance, extensible web framework
  • GORM - The fantastic ORM library for Golang
  • Cobra - A Commander for modern Go CLI interactions
  • Logrus - Structured logger for Go
  • Testify - A toolkit with common assertions and mocks
  • Gorilla Mux - A powerful HTTP router and URL matcher
  • Resty - Simple HTTP and REST client library for Go

🌟 Open Source Projects

  • Kubernetes - Production-Grade Container Scheduling and Management
  • Docker - Moby Project - a collaborative project for the container ecosystem
  • Prometheus - The Prometheus monitoring system and time series database
  • Hugo - The world's fastest framework for building websites
  • Grafana - The open observability platform
  • Terraform - Terraform enables you to safely and predictably create and manage infrastructure
  • Consul - Consul is a distributed service mesh to connect, secure, and configure services
  • Vault - A tool for secrets management, encryption as a service, and privileged access management
  • Etcd - Distributed reliable key-value store for the most critical data of a distributed system
  • CockroachDB - CockroachDB - the open source, cloud-native distributed SQL database

πŸ“ Blogs & Articles

πŸŽͺ Community

Connect With Me

Let's stay connected! Follow me on social media to stay updated:

X Instagram YouTube GitHub


Feel free to update the README.md or raise issues if any to enhance the project