{"id":26321025,"url":"https://github.com/schneidersteve/buckpal-rust","last_synced_at":"2025-09-02T23:39:58.730Z","repository":{"id":63475994,"uuid":"568149706","full_name":"schneidersteve/buckpal-rust","owner":"schneidersteve","description":"Rust Example Implementation of a Hexagonal/Onion/Clean Architecture","archived":false,"fork":false,"pushed_at":"2025-05-29T15:35:51.000Z","size":287,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-29T15:59:25.329Z","etag":null,"topics":["clean-architecture","dependency-injection","hexagonal-architecture","inversion-of-control","mockall","onion-architecture","rust","rust-analyzer","rust-async","salvo","sqlx"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schneidersteve.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":"2022-11-19T15:55:45.000Z","updated_at":"2025-05-29T15:35:54.000Z","dependencies_parsed_at":"2025-05-29T15:53:10.084Z","dependency_job_id":null,"html_url":"https://github.com/schneidersteve/buckpal-rust","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/schneidersteve/buckpal-rust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schneidersteve%2Fbuckpal-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schneidersteve%2Fbuckpal-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schneidersteve%2Fbuckpal-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schneidersteve%2Fbuckpal-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schneidersteve","download_url":"https://codeload.github.com/schneidersteve/buckpal-rust/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schneidersteve%2Fbuckpal-rust/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269948859,"owners_count":24501821,"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","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","dependency-injection","hexagonal-architecture","inversion-of-control","mockall","onion-architecture","rust","rust-analyzer","rust-async","salvo","sqlx"],"created_at":"2025-03-15T16:16:01.160Z","updated_at":"2025-08-11T20:12:17.598Z","avatar_url":"https://github.com/schneidersteve.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rust Example Implementation of a Hexagonal/Onion/Clean Architecture\n\nInspired by https://github.com/thombergs/buckpal\n\n- Kotlin Version: https://github.com/schneidersteve/buckpal-kotlin\n- Dart Version: https://github.com/schneidersteve/buckpal-dart\n\n## Tech Stack\n\n* [Rust](https://www.rust-lang.org)\n* [Rust Async](https://rust-lang.github.io/async-book/)\n* [Mockall](https://github.com/asomers/mockall)\n* [Salvo](https://salvo.rs)\n* [openssl](https://docs.rs/openssl/latest/openssl/)\n* [SQLx](https://github.com/launchbadge/sqlx)\n* [rust-analyzer](https://rust-analyzer.github.io)\n* [Visual Studio Code](https://code.visualstudio.com)\n* [Visual Studio Code Dev Containers](https://code.visualstudio.com/docs/devcontainers/containers#_quick-start-open-a-git-repository-or-github-pr-in-an-isolated-container-volume)\n\n## Layers and Dependency Inversion\n\n![Dependency Inversion](di.png)\n\n## Send Money Use Case\n\n```gherkin\nFeature: Send Money\n\n  Scenario: Transaction succeeds\n    Given a source account\n    And a target account\n\n    When money is send\n\n    Then send money succeeds\n\n    And source account is locked\n    And source account withdrawal will succeed\n    And source account is released\n\n    And target account is locked\n    And target account deposit will succeed\n    And target account is released\n\n    And accounts have been updated\n```\n\n# Cargo Examples\n\n\u003e cargo clean\n\n\u003e cargo build\n\n\u003e cargo test\n\n\u003e cargo run\n\n\u003e cargo update\n\n\u003e cargo install cargo-watch\n\n\u003e cargo watch --clear -x \"run\"\n\n\u003e cargo watch --clear -x \"test\"\n\n\u003e cargo watch --clear -x \"test -- --show-output\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschneidersteve%2Fbuckpal-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschneidersteve%2Fbuckpal-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschneidersteve%2Fbuckpal-rust/lists"}