This repository contains an example implementation of a Clean Architecture written in Rust.
Each circle (a.k.a layer) is organized in a separate crate. Currently there are these circles:
domain
application
adapter
json-boundary
infrastructure
cli
db
desktop-egui
web
web-app
web-app-api
web-app-kern
web-app-seed
web-server-warp
Depending on your system the amount and the name of circles could be different but the main dependency rule must be ensured:
Source code dependencies can only point inwards.
that means
Nothing in an inner circle can know anything at all about something in an outer circle
First install just:
cargo install just
Then you can run
just run-web
or
just run-desktop
or
just run-cli
The main purpose of this example is to discuss the architecture, not the application szenario itself. Nevertheless, the code represents a real-world application that helps self-employed people organize their lives.
As a self-employed person, I want to be able to write down spontaneous thoughts, so that I can find them later again at a central point.
As a self-employed person, I want to structure my thoughts, so that they're connected with my personal life topics.