Thanks for your interest in contributing! BERT is a visual toolkit for modeling complex systems, built with Rust + Leptos + Bevy.
- Rust: Install via rustup.rs
- Tauri Prerequisites: Follow the Tauri guide
- Node.js: For Tailwind CSS processing
git clone git@github.com:halcyonic-systems/bert.git
cd bert
npm install
cargo tauri dev # Desktop app
# OR
trunk serve # Web at localhost:1320Verify: App window opens, toolbar visible, you can create and save a model.
Alternative: Open in VS Code and select "Reopen in Container" for a pre-configured dev environment.
- Bug fixes - Pick an issue labeled
good first issue - Documentation - Improve clarity, fix errors, add examples
- Features - Implement new functionality (discuss in an issue first)
- Testing - Add test coverage for existing code
git checkout -b feature/my-feature # New feature
git checkout -b fix/issue-description # Bug fix
git checkout -b docs/what-you-changed # DocumentationProject structure:
src/
├── bevy_app/ # System model and visualization
│ ├── components/ # Core data types
│ ├── bundles/spawn/ # Entity creation
│ ├── systems/ # ECS systems
│ └── data_model/ # Save/load
└── leptos_app/ # UI components
cargo fmt --all # Format code
cargo clippy --all-targets -- -D warnings # Lint (must pass with no warnings)
cargo test --all # Run testsUse conventional commits:
feat(data-model): add complexity parameter
fix(mouse): resolve selection persistence issue
docs(readme): clarify setup instructions
refactor(systems): optimize flow rendering
- Clear title describing the change
- Reference any related issues
- Describe what changed and why
- Include screenshots for UI changes
src/bevy_app/components/system_elements.rs- Add the fieldsrc/leptos_app/details.rs- Add UI for editingsrc/bevy_app/data_model/save.rsandload.rs- Update serialization
src/bevy_app/bundles/spawn/main_system.rs- Visual definitionsrc/bevy_app/systems/ui/color.rs- Color handling
src/bevy_app/systems/ui/flow/curve.rs- Curve renderingsrc/bevy_app/bundles/spawn/flow.rs- Flow creation
- Format: Run
cargo fmtbefore committing - Linting: No clippy warnings allowed
- Documentation: Document public functions (see docs/DOCUMENTATION_GUIDELINES.md)
- Performance: Maintain 60+ FPS in visualization
BERT uses a layered architecture:
| Layer | Purpose | Location |
|---|---|---|
| UI | User interface | src/leptos_app/ |
| Visualization | Rendering system models | src/bevy_app/systems/ |
| Data Model | Core types and persistence | src/bevy_app/components/, data_model/ |
| Desktop | Native app wrapper | src-tauri/ |
For deeper architectural details, see gitbook/for-developers/architecture/.
These branches contain experimental work kept for reference. They're 80+ commits behind main - don't merge directly, but reference for architectural ideas:
| Branch | Purpose |
|---|---|
feature/concept-dictionary |
Chat UI + ontology exploration |
feature/agent-dynamics |
Temporal simulation engine |
feature/agent-params-v2 |
Agent configuration UI |
- GitHub Issues - Bug reports, feature requests, and questions
- Pull Request Comments - Code-specific discussions
Don't hesitate to open an issue to ask questions! We'd rather help you succeed than have you give up.
Before submitting, ensure:
- Code compiles without warnings
-
cargo fmtandcargo clippypass - Tests pass
- Public functions are documented
- UI changes include screenshots
Thank you for contributing to BERT!