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 xport
# 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 Rust workspace with multiple crates:
trial-submission-studio/
├── crates/
│ ├── tss-gui/ # Desktop application
│ ├── xport/ # XPT file I/O
│ ├── tss-validate/ # CDISC validation
│ ├── tss-map/ # Column mapping
│ ├── tss-normalization/ # Data transformations
│ ├── tss-ingest/ # CSV loading
│ ├── tss-output/ # Multi-format export
│ ├── tss-standards/ # CDISC standards loader
│ ├── tss-model/ # Core types + Polars utilities
│ └── tss-updater/ # Update mechanism
├── 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