{"id":25332223,"url":"https://github.com/devilzs1/go-programming","last_synced_at":"2026-04-09T12:54:03.604Z","repository":{"id":272138073,"uuid":"915614182","full_name":"devilzs1/Go-programming","owner":"devilzs1","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-01T18:16:59.000Z","size":22115,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-01T19:25:09.185Z","etag":null,"topics":["go","gofiber","golang","gorilla-mux","grpc","kafka","load-balancer","mongodb","mysql","postgresql","rabbitmq","slack-api"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devilzs1.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-12T10:48:10.000Z","updated_at":"2025-03-01T18:17:02.000Z","dependencies_parsed_at":"2025-02-22T15:56:01.120Z","dependency_job_id":null,"html_url":"https://github.com/devilzs1/Go-programming","commit_stats":null,"previous_names":["devilzs1/go-programming"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devilzs1%2FGo-programming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devilzs1%2FGo-programming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devilzs1%2FGo-programming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devilzs1%2FGo-programming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devilzs1","download_url":"https://codeload.github.com/devilzs1/Go-programming/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247792899,"owners_count":20996893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","gofiber","golang","gorilla-mux","grpc","kafka","load-balancer","mongodb","mysql","postgresql","rabbitmq","slack-api"],"created_at":"2025-02-14T04:31:30.903Z","updated_at":"2025-12-30T23:05:37.067Z","avatar_url":"https://github.com/devilzs1.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go Web Development Projects \n\nWelcome to my Go programming repository! This repository contains all the web development-related projects I have built using Go. It's designed for anyone looking to explore Go's application in web development, from beginners to intermediate-level Go enthusiasts. \n\n## Contents \n\n- **Projects Directory**: This folder contains all the individual projects I have built using Go. Each project demonstrates different web development concepts, frameworks, and patterns in Go. \n- **Web Development in Go**: This repository focuses specifically on web-based applications developed using Go, excluding basic Go language features or libraries. \n\n--- \n\n## Table of Contents \n\n1. Introduction \n2. Getting Started \n3. Project Structure \n4. Projects \n5. Technologies Used \n6. Contributing \n7. License \n\n--- \n\n## Introduction \n\nThis repository serves as a learning hub for me to document and share my Go web development journey. Each project inside the **Projects** directory demonstrates specific aspects of web development, such as REST APIs, web servers, routing, authentication, and more, all implemented using Go. \n\nAs I continue to grow my skills, I will keep adding new projects, experiments, and solutions to this repo. \n\n--- \n\n## Getting Started \n\nTo get started with any of the projects in this repository, follow these steps: \n\n### Prerequisites \n\nBefore you can run any project, make sure you have Go installed on your system. You can download it from the official Go website: \n\n- Go Programming Language Official Site: https://golang.org/dl/ \n\n### Clone the Repository \n\nYou can clone this repository to your local machine using: \n\n``` bash\ngit clone https://github.com/devilzs1/Go-programming.git \ncd Go-programming \n```\n\n### Run a Project \n\n1. Navigate to the specific project directory inside the `Projects/` folder. \n2. Run the Go application by using: \n\n``` bash\ngo run main.go \n```\n\n3. Visit the appropriate URL in your browser (usually `http://localhost:4000` or as specified in each project's README). \n\n--- \n\n## Project Structure \n\nThe directory structure of the repository looks like this: \n``` bash\nGo-programming/ \n├── README.md \n├── projects/ \n│   ├── project-1/ \n│   │   ├── main.go \n│   │   ├── README.md \n│   │   ├── /handlers \n│   │   ├── /models \n│   │   └── /utils \n│   ├── project-2/ \n│   │   ├── main.go \n│   │   └── /routes \n│   └── project-3/ \n│       ├── main.go \n│       └── /controllers \n└── LICENSE \n\n```\n\n- **`projects/`**: Contains the subdirectories for each individual project. \n- **`main.go`**: The entry point for each project. \n- **`README.md`** (per project): Contains specific details for each individual project. \n- **`/handlers`, /models, /routes, etc.**: These subdirectories contain project-specific files (like routing, business logic, models, and helpers). \n\n--- \n\n## Projects \n\nHere are some of the projects included in this repository: \n\n### 1. **Project-1: Simple Go Web Server** \n- A basic HTTP web server using the `net/http` package. \n- Implements routing and serves static files. \n- Demonstrates simple request handling and responses in Go. \n\n### 2. **Project-2: BookStore Management** \n- A basic HTTP web server using the `net/http` package. \n- Implements routing and serves static files. \n- Demonstrates using MySQL and Go : \"github.com/jinzhu/gorm\", \"github.com/jinzhu/gorm/dialects/mysql\"\n\n## Project-3: Stocks Management System\nA web application built using Go and PostgreSQL.\n- Uses PostgreSQL as the database for managing stock information.\n- Demonstrates CRUD operations for stocks, including adding, updating, and deleting stock entries.\n\n## Project-4: Event-Driven Architecture with Kafka\nA real-time event-driven system built using Go and Apache Kafka.\n- Implements event-driven communication with Apache Kafka as the messaging system.\n- Built to handle high-throughput, real-time messaging between services.\n- Demonstrates the producer-consumer model using Go and Kafka.\n\n## Project-5: Messaging System with RabbitMQ\nA messaging system built with Go and RabbitMQ.\n- Implements message queues for asynchronous processing using RabbitMQ.\n- Built to handle reliable message delivery and processing.\n- Demonstrates how to send and receive messages with RabbitMQ using Go.\n\n---\n\n## 6. **Rate-Limiter-Go**: Rate Limiting in Go\nA rate-limiting application built using Go to control the number of requests within a specified time window.\n\n- Demonstrates rate-limiting techniques in Go.\n- Useful for building APIs that need to enforce limits on user requests.\n- Implements various rate-limiting algorithms (e.g., token bucket, leaky bucket).\n\n---\n\n## 7. **GraphQL-MongoDB-Go**: GraphQL with MongoDB and Go\nA Go-based API implementing GraphQL and MongoDB integration.\n\n- Demonstrates building a GraphQL API using Go.\n- Uses MongoDB for data storage and querying.\n- Provides an example of building a flexible, efficient API with GraphQL.\n\n---\n\n## 8. **gRPC-Go**: gRPC Service with Go\nA gRPC-based service implemented using Go.\n\n- Demonstrates the use of gRPC to create efficient and scalable APIs.\n- Includes gRPC server and client examples in Go.\n- Designed for high-performance, low-latency communication between services.\n\n---\n\n## 9. **Docker_Go**: Dockerized Go Application\nA Go application containerized with Docker for deployment.\n\n- Demonstrates how to set up a Go application in a Docker container.\n- Includes a Dockerfile and instructions for building and running the app in Docker.\n- Focuses on deployment and containerization best practices.\n\n## 10. **Load Balancer**: Distributed Load Balancer\nA distributed load balancer that efficiently manages traffic distribution across multiple servers.\n\n- Implements a simple yet effective load balancing algorithm.\n- Supports round-robin, least connections, and other balancing strategies.\n- Can scale horizontally to handle large amounts of traffic efficiently.\n\n---\n\n## 11. **AWS Lambda Worker Pool**: Go Workers with DynamoDB and SQS\nAn AWS Lambda function built using Go that processes jobs using a pool of worker goroutines and stores results in DynamoDB.\n\n- Demonstrates the use of AWS Lambda for serverless execution.\n- Utilizes Amazon SQS to queue jobs and AWS DynamoDB to store the results.\n- Implements a worker pool pattern with goroutines to handle jobs concurrently, improving throughput.\n- Includes proper error handling and logging for debugging and monitoring purposes.\n\n---\n\n\nFeel free to check the individual README files for more detailed information about each project. \n\n--- \n\n## Technologies Used \n\nThis repository utilizes the following technologies and tools: \n\n- **Go**: The core programming language for building the applications.\n- **AWS Lambda**: Serverless compute service used to run the Go functions in the cloud.\n- **AWS SQS**: Amazon Simple Queue Service, used to manage job queues.\n- **AWS DynamoDB**: Managed NoSQL database used to store processed job results.\n- **AWS SDK for Go**: AWS SDK to interact with various AWS services.\n- **goroutines**: Used to implement concurrency with worker pools for processing jobs in parallel.\n- **sync package**: Go's synchronization primitives to manage concurrency and worker coordination.\n- **context**: For managing request-scoped values in the AWS Lambda handler.\n- **json**: Standard Go package to parse and handle JSON job data.\n- **log**: Standard Go package used for logging information and errors.\n- **rand**: Standard Go package used to simulate random job processing times.\n- **time**: Standard Go package used to simulate job processing delays.\n- **Sarama (Kafka)**: A Go client for Apache Kafka, enabling messaging and event streaming.\n- **RabbitMQ**: Message broker used for sending and receiving messages between applications.\n- **Docker**: Containerization platform used for creating, deploying, and running applications.\n- **gRPC**: High-performance RPC framework for building APIs in Go.\n- **Protocol Buffers (Protobuf)**: Interface definition language used with gRPC for efficient serialization of structured data.\n- **GraphQL**: Query language for APIs that provides a more flexible and efficient alternative to RESTful services.\n- **MongoDB**: NoSQL database used for storing unstructured data in some of the projects.\n- **PostgreSQL**: Relational database management system used for structured data in some of the projects.\n- **gorilla/mux**: A powerful HTTP router and URL matcher for building web applications.\n- **fiber**: A fast web framework for Go inspired by Express.js, designed to handle high-performance APIs.\n\n--- \n\n## Contributing \n\nIf you'd like to contribute to this repository or help me improve the projects, feel free to: \n\n1. Fork the repository. \n2. Create a new branch (`git checkout -b feature-name`). \n3. Make your changes. \n4. Commit your changes (`git commit -am 'Add new feature'`). \n5. Push to the branch (`git push origin feature-name`). \n6. Create a new Pull Request. \n\nFeel free to open an issue if you have any questions or feedback! \n\n--- \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevilzs1%2Fgo-programming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevilzs1%2Fgo-programming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevilzs1%2Fgo-programming/lists"}