# issarat/rust-bevy architecture

> Architecture diagram of the GitHub repository issarat/rust-bevy, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/issarat/rust-bevy
- Repository: https://github.com/issarat/rust-bevy

## Overview

This is a small Bevy ECS demo: startup creates four people, then chained systems query their components and print names and employment reports. Person, Employed, and Job define the domain data. The graph reflects the only sampled source file; no README documents additional capabilities.

Main entry points: [`src/main.rs`](https://github.com/issarat/rust-bevy/blob/main/src/main.rs) (App entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_user(("Console user"))
node_main["App entry<br/>[main.rs]"]
node_bevy["Bevy runtime"]
node_plugin["PeoplePlugin<br/>[main.rs]"]
node_setup["Setup people<br/>[main.rs]"]
node_person["Person<br/>[main.rs]"]
node_employment["Employment data<br/>[main.rs]"]
node_job["Job enum<br/>[main.rs]"]
node_world["ECS world"]
node_names["Print names<br/>[main.rs]"]
node_with_jobs["People with jobs<br/>[main.rs]"]
node_hire["Ready for hire<br/>[main.rs]"]
node_does_job["Report jobs<br/>[main.rs]"]
node_stdout["Standard output"]

node_user -->|"starts"| node_main
node_main -->|"runs app"| node_bevy
node_main -->|"adds plugin"| node_plugin
node_plugin -->|"registers systems"| node_bevy
node_bevy -->|"dispatches startup"| node_setup
node_bevy -->|"dispatches startup"| node_names
node_bevy -->|"dispatches startup"| node_with_jobs
node_bevy -->|"dispatches startup"| node_hire
node_bevy -->|"dispatches startup"| node_does_job
node_setup -->|"spawns entities"| node_world
node_world -->|"stores component"| node_person
node_world -->|"stores component"| node_employment
node_employment -->|"contains job"| node_job
node_names -->|"queries people"| node_world
node_with_jobs -->|"queries without employment"| node_world
node_hire -->|"queries without employment"| node_world
node_does_job -->|"queries employed people"| node_world
node_names -->|"prints names"| node_stdout
node_with_jobs -->|"prints report"| node_stdout
node_hire -->|"prints report"| node_stdout
node_does_job -->|"prints job titles"| node_stdout

click node_main "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"
click node_plugin "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"
click node_setup "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"
click node_person "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"
click node_employment "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"
click node_job "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"
click node_names "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"
click node_with_jobs "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"
click node_hire "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"
click node_does_job "https://github.com/issarat/rust-bevy/blob/main/src/main.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_user toneBlue
class node_main,node_plugin,node_setup,node_person,node_employment,node_job,node_names,node_with_jobs,node_hire,node_does_job toneTeal
class node_bevy,node_world,node_stdout toneIndigo
```

## Components

### Other components

- **Console user**
- [App entry](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- **Bevy runtime**
- [PeoplePlugin](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- [Setup people](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- [Person](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- [Employment data](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- [Job enum](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- **ECS world**
- [Print names](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- [People with jobs](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- [Ready for hire](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- [Report jobs](https://github.com/issarat/rust-bevy/blob/main/src/main.rs): `src/main.rs`
- **Standard output**

## Connections

- Console user → App entry: starts
- App entry → Bevy runtime: runs app
- App entry → PeoplePlugin: adds plugin
- PeoplePlugin → Bevy runtime: registers systems
- Bevy runtime → Setup people: dispatches startup
- Bevy runtime → Print names: dispatches startup
- Bevy runtime → People with jobs: dispatches startup
- Bevy runtime → Ready for hire: dispatches startup
- Bevy runtime → Report jobs: dispatches startup
- Setup people → ECS world: spawns entities
- ECS world → Person: stores component
- ECS world → Employment data: stores component
- Employment data → Job enum: contains job
- Print names → ECS world: queries people
- People with jobs → ECS world: queries without employment
- Ready for hire → ECS world: queries without employment
- Report jobs → ECS world: queries employed people
- Print names → Standard output: prints names
- People with jobs → Standard output: prints report
- Ready for hire → Standard output: prints report
- Report jobs → Standard output: prints job titles
