{"id":34176897,"url":"https://github.com/chrishrb/blog-microservice","last_synced_at":"2026-05-28T06:03:50.070Z","repository":{"id":294899233,"uuid":"988447438","full_name":"chrishrb/blog-microservice","owner":"chrishrb","description":"A modern, scalable blog platform built with a microservices architecture using Go. This is a learning project designed to demonstrate microservices concepts and best practices.","archived":false,"fork":false,"pushed_at":"2025-05-23T06:20:02.000Z","size":163,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-18T10:55:45.636Z","etag":null,"topics":["go","kafka","microservice","observability"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chrishrb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-22T15:00:47.000Z","updated_at":"2025-05-23T12:21:53.000Z","dependencies_parsed_at":"2025-05-22T16:27:43.642Z","dependency_job_id":"a6d89fa3-97c2-496f-9c50-79ae0934a05d","html_url":"https://github.com/chrishrb/blog-microservice","commit_stats":null,"previous_names":["chrishrb/blog-microservice"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chrishrb/blog-microservice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrishrb%2Fblog-microservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrishrb%2Fblog-microservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrishrb%2Fblog-microservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrishrb%2Fblog-microservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chrishrb","download_url":"https://codeload.github.com/chrishrb/blog-microservice/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrishrb%2Fblog-microservice/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33596317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","kafka","microservice","observability"],"created_at":"2025-12-15T12:59:52.425Z","updated_at":"2026-05-28T06:03:50.065Z","avatar_url":"https://github.com/chrishrb.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Blog Microservice Platform\n\nA modern, scalable blog platform built with a microservices architecture using Go. **This is a learning project** designed to demonstrate microservices concepts and best practices.\n\n## 📋 Overview\n\nThis project implements a complete blog platform with separate services for user management, post handling, and notifications. Each service is independently deployable and communicates through Kafka messaging to ensure reliability and scalability. The platform is built as an educational resource to explore and understand microservice architecture patterns.\n\n## 🏗️ Architecture\n\nThe platform consists of the following microservices:\n\n- **User Service**: Handles user registration, authentication, and profile management\n- **Post Service**: Manages blog posts and comments\n- **Notification Service**: Sends email notifications for account verification, password resets, etc.\n\n### Communication\n\nServices communicate asynchronously via Kafka for event-driven operations and directly via HTTP for synchronous API requests.\n\n## ✨ Features\n\n- **User Management**\n  - Registration and account verification\n  - Authentication with JWT\n  - Password reset functionality\n  - Role-based access control\n\n- **Blog Content Management**\n  - Create, read, update, and delete blog posts\n  - Comment management\n\n- **Notification System**\n  - Email notifications\n  - Customizable templates\n\n## 💻 Tech Stack\n\n- **Backend**: Go\n- **Message Broker**: Kafka\n- **API Documentation**: OpenAPI/Swagger\n- **Containerization**: Docker\n- **Observability**: OpenTelemetry, Jaeger\n\n## 🚦 Getting Started\n\n### Prerequisites\n\n- Docker and Docker Compose\n- Go 1.21 or higher\n\n### Installation\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/chrishrb/blog-microservice.git\ncd blog-microservice\n```\n\n2. Start the services using Docker Compose:\n```bash\ndocker-compose up -d\n```\n\n3. Access the services:\n   - User Service API: http://localhost:9410\n   - Post Service API: http://localhost:9411\n   - Notification Service: http://localhost:9412\n   - Swagger UI: http://localhost:8081\n   - Kafka UI: http://localhost:8082\n   - Mailpit (Email testing): http://localhost:8025\n   - Jaeger UI (Tracing): http://localhost:16686\n\n## 📝 API Documentation\n\nThe API is documented using OpenAPI/Swagger. You can access the documentation via Swagger UI at http://localhost:8081 after starting the services.\n\n## 👨‍💻 Development\n\n### Project Structure\n\n```\nblog-microservice/\n├── user-service/         # User management service\n├── post-service/         # Post and comment management service\n├── notification-service/ # Notification delivery service\n├── internal/             # Shared code between services\n├── config/               # Configuration files\n└── docker-compose.yaml   # Docker Compose configuration\n```\n\n### Building the Services\n\nBuild all services:\n\n```bash\nmake build\n```\n\n## 🧪 Testing\n\nRun the tests with:\n\n```bash\nmake test\n```\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrishrb%2Fblog-microservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchrishrb%2Fblog-microservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrishrb%2Fblog-microservice/lists"}