base on A production-grade todo app applying the following technologies: Go, gRPC, Docker, Kubernetes, Zap, Jaeger, Prometheus, Grafana and more # ToDo Application A web service written in Go, showcasing various features and technologies used in real world production-grade applications. ## Introduction Hi, I'm Marcos, a Software Engineer with a strong passion for crafting innovative distributed systems with more than four years of experience. This repository serves as my personal showcase, meticulously designed to demonstrate the power of Go in building production-grade web services that embrace cutting-edge technologies and deliver real-world value. ### Let's Connect! I'm excited to explore potential collaborations. Feel free to reach out to me at [marcos@huck.com.ar](mailto:marcos@huck.com.ar) or [add me on LinkedIn](https://linkedin.com/in/marcoshuck) to discuss your needs and embark on a journey together. **Services**: Software Engineering, Mentorships, Software architecture, Personalized training in any of the tools listed below. ## Design document In case you're interested in the technical explanation about this repository, feel free to check out the [DESIGN](DESIGN.md) document. ## Features - **Transport Mechanism**: [gRPC](https://grpc.io/) - **Infrastructure**: - Container engine: [Docker](https://www.docker.com/) - Local deployment: [Docker Compose](https://docs.docker.com/compose/) - Container orchestration: [Kubernetes](https://kubernetes.io/) - Provisioning: [Terraform](https://www.terraform.io/) (WIP) - Code generation: [Buf](https://buf.build/) - **Telemetry**: Supporting [OpenTelemetry](https://opentelemetry.io/) - Logging: [Zap](https://github.com/uber-go/zap) - Tracing: [Jaeger](https://www.jaegertracing.io/) - Metrics: [Prometheus](https://prometheus.io/) - **Testing & Benchmarking**: - [Playwright](https://playwright.dev/) for E2E testing - **Continuous Delivery** - Continuous Integration: [GitHub Actions](https://github.com/features/actions) - Continuous Deployment: TBD. ## Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate. ## License [MIT](LICENSE)", Assign "at most 3 tags" to the expected json: {"id":"7918","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"