Building from Source
For developers who want to compile Trial Submission Studio from source code.
Prerequisites
Required
- Rust 1.92+ - Install via rustup
- Git - For cloning the repository
Platform-Specific Dependencies
macOS
No additional dependencies required.
Linux (Ubuntu/Debian)
sudo apt-get install libgtk-3-dev libxdo-dev
Windows
No additional dependencies required.
Clone the Repository
git clone https://github.com/rubentalstra/trial-submission-studio.git
cd trial-submission-studio
Verify Rust Version
rustup show
Ensure you have Rust 1.92 or higher. To update:
rustup update stable
Build
Debug Build (faster compilation)
cargo build
Release Build (optimized, slower compilation)
cargo build --release
Run
Debug
cargo run --package tss-gui
Release
cargo run --release --package tss-gui
Or run the compiled binary directly:
./target/release/tss-gui # macOS/Linux
.\target\release\tss-gui.exe # Windows
Run Tests
# All tests
cargo test
# Specific crate
cargo test --package tss-submit
# With output
cargo test -- --nocapture
Run Lints
# Format check
cargo fmt --check
# Clippy lints
cargo clippy -- -D warnings
Project Structure
Trial Submission Studio is organized as a 6-crate Rust workspace:
trial-submission-studio/
├── crates/
│ ├── tss-gui/ # Desktop application (Iced 0.14.0)
│ ├── tss-submit/ # Mapping, normalization, validation, export
│ ├── tss-ingest/ # CSV loading
│ ├── tss-standards/ # CDISC standards loader
│ ├── tss-updater/ # Auto-update functionality
│ └── tss-updater-helper/ # macOS update helper
├── standards/ # Embedded CDISC standards
├── mockdata/ # Test datasets
└── docs/ # Documentation (this site)
Third-Party Licenses
When adding or updating dependencies, regenerate the licenses file:
# Install cargo-about (one-time)
cargo install cargo-about
# Generate licenses
cargo about generate about.hbs -o THIRD_PARTY_LICENSES.md
IDE Setup
RustRover / IntelliJ IDEA
- Open the project folder
- The Rust plugin will detect the workspace automatically
VS Code
- Install the
rust-analyzerextension - Open the project folder
Next Steps
- Contributing Guide - How to contribute
- Architecture Overview - Understand the codebase