{"id":22307743,"url":"https://github.com/albertllousas/auctions-microservice","last_synced_at":"2025-03-26T01:24:06.634Z","repository":{"id":120564078,"uuid":"599961023","full_name":"albertllousas/auctions-microservice","owner":"albertllousas","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-10T18:09:08.000Z","size":151,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-30T22:48:18.819Z","etag":null,"topics":["ddd","event-driven-architecture","functional-programming","hexagonal-architecture","kafka","microservice","mongodb","optimistic-locking","spring-boot","transactional-outbox"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","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/albertllousas.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":"2023-02-10T09:10:16.000Z","updated_at":"2024-06-06T09:29:08.000Z","dependencies_parsed_at":"2024-05-10T19:27:27.624Z","dependency_job_id":"2a72f5ed-f1e5-451f-993d-3771b311076e","html_url":"https://github.com/albertllousas/auctions-microservice","commit_stats":null,"previous_names":["albertllousas/auctions-microservice"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albertllousas%2Fauctions-microservice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albertllousas%2Fauctions-microservice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albertllousas%2Fauctions-microservice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/albertllousas%2Fauctions-microservice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/albertllousas","download_url":"https://codeload.github.com/albertllousas/auctions-microservice/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245569432,"owners_count":20636958,"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":["ddd","event-driven-architecture","functional-programming","hexagonal-architecture","kafka","microservice","mongodb","optimistic-locking","spring-boot","transactional-outbox"],"created_at":"2024-12-03T20:11:29.587Z","updated_at":"2025-03-26T01:24:06.604Z","avatar_url":"https://github.com/albertllousas.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Auction System\n\nKeywords: `Tactical DDD`, `microservice`, `kotlin`, `spring-boot`, `Hexagonal-Architecture`, `SOLID`, `Domain-Driven Design`, `functional-programming`,\n`Testing`, `Event-Driven Architecture`, `Domain-Events`, `Kafka`, `MongoDB`, `Transactional-outbox`, `optimistic-locking`\n\n## Problem\n\nDesign and implement an online auction system that allows buyers to participate on auctions through digital means, \nrather than being at a physical location.\n\n## Functional requirements\n\n- Sellers can post any item for auction at any time from their catalog, with an initial price, a minimal bid and an opening date-time.\n- An item can not be for an auction twice, unless it was not sold in a previous action.\n- An auction can not be changed, only cancelled, but only after 5 min of creation.\n- An auction will be on a preview status for a while, between 1 day to 7 days, allowing potential buyers to take a look beforehand.\n- Once an auction is open, bidders can bid for the item.\n- A Bidder wins an item if there are no higher bids in the next 20 min.\n- An auction will expire if there aren't any bidders in a period of 1h.\n- Bidders can bid on any existing item any number of times.\n- Bids are only allowed during opening time.\n- The platform would allow auto-bidding up to a limit, increasing automatically your bid every time someone outbids you.\n\n## Scope\n\nThe scope of the system should be auctions, we will work with the assumption that we will have other systems in place for:\n\n- Catalog\n- User lifecycle\n- ...\n\nDesign only the Backend part, let's skip all the FE side.\n\n## Non Functional Requirements\n\n- Low Latency\n- High Availability\n- Highly consistent\n\n## Estimated workloads\n\n- 10M auctions added every day\n- 100M requests to bid on these items\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbertllousas%2Fauctions-microservice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falbertllousas%2Fauctions-microservice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falbertllousas%2Fauctions-microservice/lists"}