Yoda/README.md

50 lines
1.4 KiB
Markdown
Raw Normal View History

2024-09-18 20:39:03 +03:00
# Yoda - Browser for [Gemini protocol](https://geminiprotocol.net)
2024-09-18 20:52:52 +03:00
Rust / GTK 4 implementation
2024-09-18 20:39:03 +03:00
> [!IMPORTANT]
> Project in development!
2024-09-18 20:51:18 +03:00
>
## Install
2024-09-20 17:54:28 +03:00
### Stable
``` bash
cargo install Yoda
```
2024-09-23 14:26:24 +03:00
### Repository
2024-09-19 13:23:28 +03:00
``` bash
git clone https://github.com/YGGverse/Yoda.git
cd Yoda
git checkout Rust-GTK4
2024-09-23 14:26:24 +03:00
cargo run
2024-09-19 13:23:28 +03:00
```
2024-09-23 14:26:24 +03:00
## Development
This guide in process
### Modules
#### `browser`
* Main file must have `mod.rs` name because it may include additional submodules in same location like database, template, etc
2024-09-23 14:28:21 +03:00
* The codebase of module must be as minimal as possible: separate different tasks to submodules
2024-09-23 14:26:24 +03:00
* Every module or it helper must contain and implement only one `struct`
* Composition modules (like box for window) stored in sub-folders and following same principles as parent
* Every mod access 1 level of child API, never parents (e.g.`super`)
2024-09-23 14:38:45 +03:00
* Mod constructor must return [Arc pointer](https://doc.rust-lang.org/std/sync/struct.Arc.html) for new object created (to support async operations)
2024-09-23 14:26:24 +03:00
### Contribution
* before commit, make sure:
* new branch created for every new PR `git checkout -b 'contribution-name'`
* new code follows common [rustfmt](https://rust-lang.github.io/rustfmt/) style `cargo fmt --check`
2024-09-18 20:52:52 +03:00
## See also
2024-09-18 20:56:04 +03:00
* [CPP-GTK4](https://github.com/YGGverse/Yoda/tree/CPP-GTK4) - C++ / GTK 4 implementation
* [PHP-GTK3](https://github.com/YGGverse/Yoda/tree/PHP-GTK3) - PHP / GTK 3 experimental branch