{"id":25352283,"url":"https://github.com/andygeiss/cloud-native-store","last_synced_at":"2025-07-10T10:36:57.893Z","repository":{"id":269206480,"uuid":"905793114","full_name":"andygeiss/cloud-native-store","owner":"andygeiss","description":"A Go-based key-value store showcasing cloud-native patterns like transactional logging, data sharding, encryption, TLS, and circuit breakers. Built with hexagonal architecture for modularity and extensibility, it includes a robust API and in-memory storage for efficiency and stability.","archived":false,"fork":false,"pushed_at":"2025-01-11T09:23:59.000Z","size":170,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T13:15:49.138Z","etag":null,"topics":["circuit-breaker","cloud-native","data-sharding","debounce","go","hexagonal-architecture","in-memory-storage","key-value-store","open-source","retry","tls-security","transactional-logging"],"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/andygeiss.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}},"created_at":"2024-12-19T14:32:05.000Z","updated_at":"2025-01-11T09:24:03.000Z","dependencies_parsed_at":"2024-12-21T19:19:47.731Z","dependency_job_id":"ddf94bb1-d7da-4d30-a44e-4786dc0f5a87","html_url":"https://github.com/andygeiss/cloud-native-store","commit_stats":null,"previous_names":["andygeiss/cloud-native-store"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fcloud-native-store","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fcloud-native-store/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fcloud-native-store/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fcloud-native-store/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andygeiss","download_url":"https://codeload.github.com/andygeiss/cloud-native-store/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247947858,"owners_count":21023066,"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":["circuit-breaker","cloud-native","data-sharding","debounce","go","hexagonal-architecture","in-memory-storage","key-value-store","open-source","retry","tls-security","transactional-logging"],"created_at":"2025-02-14T18:38:36.810Z","updated_at":"2025-04-09T00:04:03.746Z","avatar_url":"https://github.com/andygeiss.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/andygeiss/cloud-native-store/blob/main/logo.png?raw=true\" /\u003e\n\u003c/p\u003e\n\n# Cloud Native Store\n\n[![License](https://img.shields.io/github/license/andygeiss/cloud-native-store)](https://github.com/andygeiss/cloud-native-store/blob/master/LICENSE)\n[![Releases](https://img.shields.io/github/v/release/andygeiss/cloud-native-store)](https://github.com/andygeiss/cloud-native-store/releases)\n[![Go Report Card](https://goreportcard.com/badge/github.com/andygeiss/cloud-native-store)](https://goreportcard.com/report/github.com/andygeiss/cloud-native-store)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/df82f7d9fa07469eadd726342e837197)](https://app.codacy.com/gh/andygeiss/cloud-native-store/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n[![Codacy Badge](https://app.codacy.com/project/badge/Coverage/df82f7d9fa07469eadd726342e837197)](https://app.codacy.com/gh/andygeiss/cloud-native-store/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_coverage)\n\n**Cloud Native Store** is a Go-based key-value store showcasing cloud-native patterns like transactional logging, data sharding, encryption, TLS, and circuit breakers. Built with hexagonal architecture for modularity and extensibility, it includes a robust API and in-memory storage for efficiency and stability.\n\n## Project Motivation\n\nThe motivation behind **Cloud Native Store** is to provide a practical example of implementing a key-value store that adheres to cloud-native principles. The project aims to:\n\n1. Demonstrate best practices for building scalable, secure, and reliable cloud-native applications.\n2. Showcase the use of hexagonal architecture to enable modular and testable code.\n3. Offer a reference implementation for features like encryption, transactional logging, and stability mechanisms.\n4. Inspire developers to adopt cloud-native patterns in their projects.\n\n## Project Setup and Run Instructions\n\nFollow these steps to set up and run the **Cloud Native Store**:\n\n### Prerequisites\n1. Create an encryption key by running the following command:\n```bash\njust genkey\n```\n\n2. Create an `.env` file and replace the following values besides `HOME_PATH` with your own:\n\n```env\nCLIENT_TIMEOUT=\"5s\"\n\nENCRYPTION_KEY=\"0a0375de7bd186c2f8d80ef94e5f3d357462f594ca6785d4779f52bcb2b65b85\"\n\nGITHUB_CLIENT_ID=\"\"\nGITHUB_CLIENT_SECRET=\"\"\nGITHUB_REDIRECT_URL=\"http://localhost:8080/auth/callback\"\nGITHUB_SCOPE=\"user:read\"\n\nHOME_PATH=\"/ui\"\n\nPORT=\"8080\"\n\nSERVER_IDLE_TIMEOUT=\"5s\"\nSERVER_READ_HEADER_TIMEOUT=\"5s\"\nSERVER_READ_TIMEOUT=\"5s\"\nSERVER_WRITE_TIMEOUT=\"5s\"\n\nSTORE_BREAKER_THRESHOLD=\"5\"\nSTORE_DEBOUNCE_PER_SEC=\"10\"\nSTORE_RETRY_DELAY=\"5s\"\nSTORE_RETRY_MAX=\"3\"\nSTORE_SHARDS=\"2\"\nSTORE_TIMEOUT=\"5s\"\n```\n\n### Commands\n\n#### Test the Service\nTo run unit tests:\n```bash\njust test\n```\nThis will execute tests for the core service logic.\n\n#### Run the Service\nTo start the service:\n```bash\njust run\n```\n\n#### How to Test\n\nAfter running the service, you can verify its health by visiting the UI in your browser:\n\n[http://localhost:8080/ui](http://localhost:8080/ui)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandygeiss%2Fcloud-native-store","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandygeiss%2Fcloud-native-store","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandygeiss%2Fcloud-native-store/lists"}