{"id":24810740,"url":"https://github.com/stephenjacobsio/echo-scribe","last_synced_at":"2026-04-19T14:01:27.092Z","repository":{"id":218265752,"uuid":"745998765","full_name":"stephenjacobsio/echo-scribe","owner":"stephenjacobsio","description":"A sleek, efficient .NET 8 minimal WebAPI microservices-based blog application. Emphasizing simplicity and performance, it leverages the latest .NET technologies to provide a scalable and responsive blogging platform. Perfect for developers and writers looking for a modern, container-ready blogging solution.","archived":false,"fork":false,"pushed_at":"2024-01-25T21:13:04.000Z","size":20,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-25T13:24:45.841Z","etag":null,"topics":["blog","blog-engine","docker","docker-compose","dotnet","entity-framework-core","microservices","minimal-api","npgsqlconnection","open-source","postgresql"],"latest_commit_sha":null,"homepage":"","language":null,"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/stephenjacobsio.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}},"created_at":"2024-01-20T19:28:19.000Z","updated_at":"2024-01-28T08:05:03.000Z","dependencies_parsed_at":"2024-01-25T22:24:26.604Z","dependency_job_id":"0f852bc1-bb47-4ae8-8b91-e1b5308db22b","html_url":"https://github.com/stephenjacobsio/echo-scribe","commit_stats":null,"previous_names":["rootiovo/echoscribe","rootiovo/echo-scribe","stephenjacobsio/echo-scribe"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stephenjacobsio/echo-scribe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenjacobsio%2Fecho-scribe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenjacobsio%2Fecho-scribe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenjacobsio%2Fecho-scribe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenjacobsio%2Fecho-scribe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stephenjacobsio","download_url":"https://codeload.github.com/stephenjacobsio/echo-scribe/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stephenjacobsio%2Fecho-scribe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32009239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"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":["blog","blog-engine","docker","docker-compose","dotnet","entity-framework-core","microservices","minimal-api","npgsqlconnection","open-source","postgresql"],"created_at":"2025-01-30T12:17:52.069Z","updated_at":"2026-04-19T14:01:27.008Z","avatar_url":"https://github.com/stephenjacobsio.png","language":null,"funding_links":["https://www.buymeacoffee.com/yourusername"],"categories":[],"sub_categories":[],"readme":"# EchoScribe\n\nEchoScribe is a modern, scalable blogging platform, built as a microservices architecture using .NET 8. This project showcases best practices in developing RESTful APIs, microservices orchestration, and cloud-native application development.\n\n## Features 🌟\n\n- Microservices architecture with individual services for Users, Blogs, and Comments.\n- RESTful API endpoints implemented with .NET 8 minimal APIs.\n- Robust data persistence with PostgreSQL.\n- Asynchronous communication and message queuing (e.g., RabbitMQ/Kafka).\n- Containerization with Docker and orchestration with Kubernetes.\n- Comprehensive unit and integration testing with NUnit.\n- CI/CD integration using Azure DevOps pipelines.\n- Container management using Kubernetes configures with Helm charts.\n- Global exception handling and robust logging.\n\n## Services 📦\n\n- **UserService**: Manages user information and authentication.\n- **BlogService**: Handles blog post creation, updates, and retrieval.\n- **CommentService**: Manages comments on blog posts.\n- **ApiGateway**: A central point for routing requests to respective services.\n\n## Getting Started 🚀\n\nThese instructions will get a copy of EchoScribe up and running on your local machine for development and testing purposes.\n\n### Prerequisites\n\n- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0)\n- [Docker](https://www.docker.com/get-started)\n- [PostgreSQL](https://www.postgresql.org/download/)\n\n### Installation\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/rootiovo/echoscribe.git\n   ```\n\n2. Navigate to the service directory (e.g., UserService) you want to run:\n   ```bash\n   cd EchoScribe.UserService/src/EchoScribe.UserService.API\n   ```\n\n3. Build and run the service:\n   ```bash\n   dotnet build\n   dotnet run\n   ```\n\n4. Repeat steps 2 and 3 for other services, or use Docker Compose at the root:\n   ```bash\n   docker-compose up\n   ```\n\n## Running the Tests ⚙️\n\nExecute the following commands to run the automated tests for EchoScribe.\n\n### Unit Tests\n\n```bash\ndotnet test EchoScribe.UserService.Tests\n```\n\n### Integration Tests\n\n```bash\ndotnet test EchoScribe.UserService.IntegrationTests\n```\n\n## CI/CD Pipeline and Deployment 🚀\n\nEchoScribe employs a robust CI/CD pipeline using GitHub Actions, ensuring that every commit and pull request is built, tested, and, upon merge, automatically deployed to an Amazon EKS (Elastic Kubernetes Service) cluster. This setup guarantees a consistent and reliable delivery process, essential for maintaining high-quality software.\n\n### Key Features of the Pipeline\n\n- **Automated Builds**: On every push and pull request to the `main` branch, the code is automatically built to check for compilation errors.\n- **Testing**: The pipeline runs all unit and integration tests, ensuring that new changes do not break existing functionality.\n- **Coding Standards Check**: StyleCop is integrated into the pipeline to enforce coding standards and maintain code quality.\n- **Automated Deployment**: Merged changes are automatically deployed to the Amazon EKS cluster, ensuring that the latest version of the application is always running.\n\n### Workflow Steps\n\n1. **Build**: The application is compiled to check for any compilation errors.\n2. **Test**: NUnit is used to run all unit and integration tests.\n3. **StyleCop Check**: Coding standards are enforced through automated checks, ensuring adherence to best practices.\n4. **Deployment**: Upon successful completion of the above steps, the application is deployed to Amazon EKS.\n\n### Amazon EKS Deployment\n\n- The application uses Kubernetes manifests for deployment, ensuring scalable and manageable orchestration.\n- The CI/CD pipeline is configured with necessary AWS credentials for secure deployment to the EKS cluster.\n\n### Local Development vs. Production Deployment\n\n- For local development, developers can use Docker Compose to run the application in a containerized environment.\n- The production deployment is handled through the CI/CD pipeline, ensuring a consistent and reliable process from development to production.\n\nThis CI/CD process forms the backbone of EchoScribe's development workflow, embodying best practices in continuous integration and deployment.\n\n## Support ☕\n\nIf you like my work and want to support me, consider buying me a coffee!\n\n[![Buy Me A Coffee](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/yourusername)\n\n## Contributing 🤝\n\nContributions to EchoScribe are welcome! Please read [CONTRIBUTING.md](https://github.com/rootiovo/echoscribe/CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.\n\n## License 📄\n\nEchoScribe is licensed under the MIT License - see the [LICENSE.md](https://github.com/rootiovo/echoscribe/LICENSE.md) file for details.\n\n## Acknowledgments 🙏\n\n- Thanks to all contributors and supporters of the EchoScribe project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephenjacobsio%2Fecho-scribe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstephenjacobsio%2Fecho-scribe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephenjacobsio%2Fecho-scribe/lists"}