# Contributing to Cfait
Cfait shares one Rust core across TUI, GUI, and Android clients. To maintain consistency, please follow these guidelines.
### Core Principles
1. **Feature Parity:** New features should be implemented across all three clients (TUI, GUI, Android). If you can't, please note it in your PR.
2. **Tests:** Test your changes on all three clients to ensure nothing breaks.
3. **Update Documentation:** If you add a feature, update both the `README.md` and the in-app help for all clients.
* **TUI:** `src/tui/view.rs`
* **GUI:** `src/gui/view/help.rs`
* **Android:** `android/app/src/main/java/com/trougnouf/cfait/ui/HelpScreen.kt`
4. **Keep it Light:** Aim for simplicity to minimize the codebase and maintenance burden and to keep the program fast.
### Submitting a Pull Request
Before submitting, please ensure your changes meet the following criteria:
* **Add Unit Tests** for any new logic where applicable.
* **Pass CI Checks.** The CI will fail if these commands don't pass locally:
```bash
cargo clippy --all-features --all-targets
cargo test --all-features --all-targets
```
### Local Development
* **TUI:** `cargo run`
* **GUI:** `cargo run --features gui --bin gui`
* **Android:** See build instructions in `README.md`.
### Other ways to contribute
* **Testing:** Use the current development version of Cfait (e.g. `cfait-git` on Arch Linux) and report any bug before the next release.
* **Documentation:** Could always be improved
* **Localization:** This isn't implemented yet as of when this document was written, but feel free to contact me s.t. I will recontact you when it's ready.