{"id":15137397,"url":"https://github.com/eddie4k-code/sneakerstop","last_synced_at":"2026-02-07T08:31:06.773Z","repository":{"id":235610434,"uuid":"790990548","full_name":"Eddie4k-code/SneakerStop","owner":"Eddie4k-code","description":"a PoC Sneaker Marketplace API built on event-driven architecture","archived":false,"fork":false,"pushed_at":"2024-10-26T22:42:15.000Z","size":1315,"stargazers_count":2,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-04T04:43:46.657Z","etag":null,"topics":["apache-kafka","docker","event-driven-architecture","github-actions","kubernetes","microservices","nginx","open-telemetry","python","terraform","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/Eddie4k-code.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":"2024-04-23T22:29:35.000Z","updated_at":"2024-12-17T09:24:07.000Z","dependencies_parsed_at":"2024-04-26T00:07:59.908Z","dependency_job_id":"0d06ea60-6f12-46b1-803e-5b146ac9fde1","html_url":"https://github.com/Eddie4k-code/SneakerStop","commit_stats":{"total_commits":339,"total_committers":1,"mean_commits":339.0,"dds":0.0,"last_synced_commit":"2cc5b6063ef30b53bd90855dd9d389744211d82b"},"previous_names":["eddie4k-code/connectu","eddie4k-code/sneakerstop"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eddie4k-code%2FSneakerStop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eddie4k-code%2FSneakerStop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eddie4k-code%2FSneakerStop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Eddie4k-code%2FSneakerStop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Eddie4k-code","download_url":"https://codeload.github.com/Eddie4k-code/SneakerStop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247123098,"owners_count":20887259,"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":["apache-kafka","docker","event-driven-architecture","github-actions","kubernetes","microservices","nginx","open-telemetry","python","terraform","typescript"],"created_at":"2024-09-26T07:00:39.932Z","updated_at":"2026-02-07T08:31:06.733Z","avatar_url":"https://github.com/Eddie4k-code.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sneaker Marketplace PoC\n\nP.S (This has been by far my favorite side project so far xD)\n\n## Overview\n\nThis project is a proof of concept for a sneaker marketplace built on a microservices architecture, utilizing Kafka for event-driven communication between services. Docker and Kubernetes are employed for containerization and orchestration, with Terraform used for provisioning Kubernetes manifests.\n\n\n## Architecture\n\nThe architecture of the system is based on microservices, each serving a specific function within the sneaker marketplace ecosystem. Kafka acts as the central event bus for communication between these services, enabling decoupling and scalability.\n\n## Swagger API Documentation\n\nThis project uses Swagger for API documentation. You can access the Swagger UI for different services to explore and test the API endpoints.\n\n- **Sneaker Service**: [http://localhost/api-docs/sneakers](http://localhost/api-docs/sneakers)\n\n\n## What About Order of Events/Messages?\nKafka provides the ability to associate keys with messages. When a message in Kafka is sent with a key, all messages sharing the same key will always go to the same parition in a topic. This helps maintain proper ordering of messages. Without a key, messages are distributed in a round-robin fashion across paritions in a topic.\n\n## What About Duplicate Events?\n### Idempotent\nWithin the Kafka Producers we have set `idempotent` to `true`. This configuration will help ensure that duplicate messages are not introduced due to events such as unexpected retries. When a producer sends a message, it will be assigned a Producer Id. The Kafka Broker will keep track of the largest PID-Sequence number combination sucessfully written, discarding lower sequence numbers.\n\n\n## CI/CD Workflow\n### TODO ADD \n\n\n## Runbook\n\n### Provision Infrastructure\n\n#### Terraform Environment Variables\nGenerate a .tfvars file in the appropriate environment directory (dev, stage, prod) including the following variables - \n\njwt_secret\nstripe_secret\n\n#### Command\nWithin the root directory `make apply` will provision all needed infrastructure.\n\n### Tear-Down Infrastructure\nWithin the root directory `make destroy` will destroy all provisioned infrastructure.\n\n## Main Technologies Used\n- Typescript\n- Express\n- Node.Js\n- Kafka\n- Docker\n- Kubernetes (k8s)\n- Terraform\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddie4k-code%2Fsneakerstop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feddie4k-code%2Fsneakerstop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feddie4k-code%2Fsneakerstop/lists"}