{"id":31692396,"url":"https://github.com/gftf2011/python-vending-machine","last_synced_at":"2026-03-06T22:32:24.119Z","repository":{"id":255349834,"uuid":"831256242","full_name":"gftf2011/python-vending-machine","owner":"gftf2011","description":"Python LLD(Low Level Design) Vending Machine REST API built with FastAPI using Clean Architecture and Design Patterns and Domain Driven Design","archived":false,"fork":false,"pushed_at":"2025-05-20T12:41:42.000Z","size":271,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-08T14:13:49.500Z","etag":null,"topics":["clean-architecture","clean-code","docker","docker-compose","domain-driven-design","fastapi","github-actions","python","python3","rest","solid","test"],"latest_commit_sha":null,"homepage":"http://github.com/gftf2011","language":"Python","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/gftf2011.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,"zenodo":null}},"created_at":"2024-07-20T04:05:55.000Z","updated_at":"2025-05-20T12:41:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"b946d534-1a91-4226-acda-d2deaae66097","html_url":"https://github.com/gftf2011/python-vending-machine","commit_stats":null,"previous_names":["gftf2011/python-vending-machine"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gftf2011/python-vending-machine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gftf2011%2Fpython-vending-machine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gftf2011%2Fpython-vending-machine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gftf2011%2Fpython-vending-machine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gftf2011%2Fpython-vending-machine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gftf2011","download_url":"https://codeload.github.com/gftf2011/python-vending-machine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gftf2011%2Fpython-vending-machine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30201001,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["clean-architecture","clean-code","docker","docker-compose","domain-driven-design","fastapi","github-actions","python","python3","rest","solid","test"],"created_at":"2025-10-08T14:06:16.500Z","updated_at":"2026-03-06T22:32:24.099Z","avatar_url":"https://github.com/gftf2011.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\t\u003ch1\u003e(STUDY) CLEAN Python Vending Machine • :snake: :computer:\u003c/h1\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"#page_facing_up-about\"\u003eAbout\u003c/a\u003e •\n  \u003ca href=\"#hammer_and_wrench-supported-os\"\u003eSupported OS\u003c/a\u003e • \n  \u003ca href=\"#large_blue_diamond-design-patterns\"\u003eDesign Patterns\u003c/a\u003e •\n  \u003ca href=\"#blue_book-principles\"\u003ePrinciples\u003c/a\u003e •\n  \u003ca href=\"#clipboard-required-tools\"\u003eRequired Tools\u003c/a\u003e •\n  \u003ca href=\"#racing_car-running-project\"\u003eRunning Project\u003c/a\u003e •\n  \u003ca href=\"#test_tube-running-tests\"\u003eRunning Tests\u003c/a\u003e •\n  \u003ca href=\"#memo-license\"\u003eLicense\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/gftf2011/python-vending-machine/blob/main/.github/images/background.png\" /\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n## :page_facing_up: About\n\nThis a LLD (Low Level Design) Code backend from a Vending Machine made with python.\n\nThe objective from this project is to show how to create an API with a well-defined and decoupled architecture, using Clean Architecture concepts, dividing the layers responsibility and exploring the usage of several design patterns !\n\nWe will be exploring many advanced concepts of databases such as partitioning and CRON jobs !\n\n\u003cbr/\u003e\n\n## :hammer_and_wrench: Supported OS\n\n- [x] Mac OS\n- [x] Linux\n- [x] Windows - WSL\n\n\u003cbr/\u003e\n\n## :large_blue_diamond: Design Patterns\n\n### Creational\n\n- [Abstract Factory](https://refactoring.guru/design-patterns/abstract-factory)\n- [Factory Method](https://refactoring.guru/design-patterns/factory-method)\n- [Builder](https://refactoring.guru/design-patterns/builder)\n- [Singleton](https://refactoring.guru/design-patterns/singleton)\n\n### Structural\n\n- [Adapter](https://refactoring.guru/design-patterns/adapter)\n- [Decorator](https://refactoring.guru/design-patterns/decorator)\n\n\u003cbr/\u003e\n\n## :blue_book: Principles\n\n- [Single Responsibility Principle (SRP)](https://en.wikipedia.org/wiki/Single-responsibility_principle)\n- [Open Closed Principle (OCP)](https://en.wikipedia.org/wiki/Open%E2%80%93closed_principle)\n- [Liskov Substitution Principle (LSP)](https://en.wikipedia.org/wiki/Liskov_substitution_principle)\n- [Interface Segregation Principle (ISP)](https://en.wikipedia.org/wiki/Interface_segregation_principle)\n- [Dependency Inversion Principle (DIP)](https://en.wikipedia.org/wiki/Dependency_inversion_principle)\n- [Separation of Concerns (SOC)](https://en.wikipedia.org/wiki/Separation_of_concerns)\n- [Don't Repeat Yourself (DRY)](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself)\n- [You Aren't Gonna Need It (YAGNI)](https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it)\n- [Keep It Simple, Stupid (KISS)](https://en.wikipedia.org/wiki/KISS_principle)\n- [Composition Over Inheritance](https://en.wikipedia.org/wiki/Composition_over_inheritance)\n\n\u003cbr/\u003e\n\n## :clipboard: Required Tools\n\n- [x] Python - [https://www.python.org/](https://www.python.org/)\n  - Python version: 3.12.4\n- [x] Docker - [https://www.docker.com/](https://www.docker.com/)\n\n\u003cbr/\u003e\n\n## :racing_car: Running Project\n\n```sh\n  $ python -m pip install --upgrade pip\n  $ pip install poetry==1.8.3\n  $ poetry install --no-root\n  $ ./cmds/run_dev.sh\n```\n\n### OBS.: Ensure to install all dependencies in \u003ca href=\"#clipboard-required-tools\"\u003eRequired Tools\u003c/a\u003e\n\n\u003cbr/\u003e\n\n## :test_tube: Running Tests\n\n\u003e ### Unit Tests\n\n```sh\n  $ ./cmds/test_unit.sh\n```\n\n\u003e ### Integration Tests\n\n```sh\n  $ ./cmds/test_integration.sh\n```\n\n\u003e ### E2E Tests\n\n```sh\n  $ ./cmds/test_e2e.sh\n```\n\n\u003e ### Full Test Coverage Report\n\n```sh\n  $ ./cmds/test_all.sh\n```\n\n\u003cbr/\u003e\n\n## :memo: License\n\nThis project is under MIT license. See the [LICENSE](https://github.com/gftf2011/python-vending-machine/blob/main/LICENSE) file for more details.\n\n---\n\nMade with lots of :heart: by [Gabriel Ferrari Tarallo Ferraz](https://www.linkedin.com/in/gabriel-ferrari-tarallo-ferraz/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgftf2011%2Fpython-vending-machine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgftf2011%2Fpython-vending-machine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgftf2011%2Fpython-vending-machine/lists"}