--- title: "Getting Started with RDesk" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Getting Started with RDesk} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r} # Verify RDesk is installed correctly packageVersion("RDesk") # Check that the example app is bundled (if existing) app_path <- system.file("templates/hello", package = "RDesk") if (nzchar(app_path)) { file.exists(app_path) } ``` ## The "Last Mile" of R Deployment Data analysts build powerful tools in R, but sharing them with non-technical users is difficult. Shiny is excellent for web dashboards, but it requires a server and a steady network connection. **RDesk** solves this by turning your R code into a **native Windows desktop application**. It runs as a standalone `.exe` with zero network overhead and no server required. ## 1. Installation RDesk works out-of-the-box on modern Windows systems. You only need **R** and **Rtools** installed. ```r # Install from GitHub # devtools::install_github("Janakiraman-311/RDesk") library(RDesk) ``` ## 2. Your First App (The One-Click Way) The fastest way to build an RDesk application is using the built-in scaffolding tool. This generates a professional dashboard with a sidebar, KPI cards, and an asynchronous charting engine. ```r library(RDesk) # Create a professional dashboard in a new directory RDesk::rdesk_create_app("MyDashboard") ``` ![RDesk Hero Dashboard](../man/figures/landing.png) Navigate to the `MyDashboard` folder and run `app.R` to see the results. ## 3. Building a Standalone Executable The core value of RDesk is the ability to turn your R code into a standalone `.exe` that runs on any machine without requiring a pre-installed R version. > **First build note:** The initial build takes 3-5 minutes as RDesk > downloads and bundles a portable R runtime. Subsequent builds > complete in under 30 seconds. ```r # Build a portable ZIP bundle RDesk::build_app( app_dir = "MyDashboard", app_name = "MyProfessionalApp" ) ``` The resulting `.zip` file in the `dist/` folder contains exactly what you need to distribute your tool. The end-user simply unzips and runs `MyProfessionalApp.exe`. ### Using renv for reproducibility If your project uses `renv`, commit your `renv.lock` in the project root. RDesk's GitHub Actions workflows will automatically restore from that lockfile before building. Additionally, `build_app()` writes a bundle-level `renv.lock` into each distributable when `renv` is active. ## 4. Key Concepts ### Zero-Port IPC Zero ports, zero firewall issues. Communication happens over standard input/output using a high-speed JSON protocol. ### Async Processing Use the `async()` wrapper to run heavy R tasks without freezing the UI: ```r app$on_message("heavy_task", async(function(msg) { Sys.sleep(2) # Simulate work list(status = "Done") }, app = app)) ``` ## Next Steps * [**Coming from Shiny**](shiny-migration.html) — Map your existing Shiny knowledge to the RDesk mental model. * [**Cookbook**](cookbook.html) — Common recipes for file dialogs, charts, and native menus. * [**Async Guide**](async-guide.html) — Deep dive into background task management.