{"id":13736151,"url":"https://github.com/insightsengineering/teal","last_synced_at":"2025-05-15T15:05:12.318Z","repository":{"id":37752719,"uuid":"383270569","full_name":"insightsengineering/teal","owner":"insightsengineering","description":"Exploratory Web Apps for Analyzing Clinical Trial Data","archived":false,"fork":false,"pushed_at":"2025-05-11T20:25:40.000Z","size":92756,"stargazers_count":210,"open_issues_count":91,"forks_count":45,"subscribers_count":23,"default_branch":"main","last_synced_at":"2025-05-11T21:22:40.913Z","etag":null,"topics":["clinical-trials","nest","r","shiny","webapp"],"latest_commit_sha":null,"homepage":"https://insightsengineering.github.io/teal/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/insightsengineering.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"custom":["https://pharmaverse.org"]}},"created_at":"2021-07-05T21:42:08.000Z","updated_at":"2025-05-08T23:08:22.000Z","dependencies_parsed_at":"2024-01-19T10:41:28.785Z","dependency_job_id":"c7a9d8bc-2573-47f8-9520-b80138f7a515","html_url":"https://github.com/insightsengineering/teal","commit_stats":{"total_commits":2477,"total_committers":68,"mean_commits":36.4264705882353,"dds":0.8728300363342754,"last_synced_commit":"c57d6dee634c56982029e55742532b80360a4959"},"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insightsengineering%2Fteal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insightsengineering%2Fteal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insightsengineering%2Fteal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insightsengineering%2Fteal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/insightsengineering","download_url":"https://codeload.github.com/insightsengineering/teal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254364270,"owners_count":22058878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clinical-trials","nest","r","shiny","webapp"],"created_at":"2024-08-03T03:01:16.646Z","updated_at":"2025-05-15T15:05:12.276Z","avatar_url":"https://github.com/insightsengineering.png","language":"R","funding_links":["https://pharmaverse.org"],"categories":["Frameworks","R","Ranked by starred repositories"],"sub_categories":["Foundational frameworks"],"readme":"# `teal`: Interactive Exploratory Data Analysis with `Shiny` Web-Applications \u003ca href='https://insightsengineering.github.io/teal/'\u003e\u003cimg src=\"man/figures/logo.svg\" align=\"right\" height=\"139\" style=\"max-width: 100%; max-height: 139px;\"/\u003e\u003c/a  \u003e\n\n\u003c!-- start badges --\u003e\n[![CRAN Version](https://www.r-pkg.org/badges/version/teal?color=green)](https://cran.r-project.org/package=teal)\n[![Total Downloads](http://cranlogs.r-pkg.org/badges/grand-total/teal?color=green)](https://cran.r-project.org/package=teal)\n[![Last Month Downloads](http://cranlogs.r-pkg.org/badges/last-month/teal?color=green)](https://cran.r-project.org/package=teal)\n[![Last Week Downloads](http://cranlogs.r-pkg.org/badges/last-week/teal?color=green)](https://cran.r-project.org/package=teal)\n\n[![Check 🛠](https://github.com/insightsengineering/teal/actions/workflows/check.yaml/badge.svg)](https://insightsengineering.github.io/teal/main/unit-test-report/)\n[![Docs 📚](https://github.com/insightsengineering/teal/actions/workflows/docs.yaml/badge.svg)](https://insightsengineering.github.io/teal/)\n[![Code Coverage 📔](https://raw.githubusercontent.com/insightsengineering/teal/_xml_coverage_reports/data/main/badge.svg)](https://insightsengineering.github.io/teal/main/coverage-report/)\n\n![GitHub forks](https://img.shields.io/github/forks/insightsengineering/teal?style=social)\n![GitHub repo stars](https://img.shields.io/github/stars/insightsengineering/teal?style=social)\n\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/insightsengineering/teal)\n![GitHub contributors](https://img.shields.io/github/contributors/insightsengineering/teal)\n![GitHub last commit](https://img.shields.io/github/last-commit/insightsengineering/teal)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/insightsengineering/teal)\n![GitHub repo size](https://img.shields.io/github/repo-size/insightsengineering/teal)\n![GitHub language count](https://img.shields.io/github/languages/count/insightsengineering/teal)\n[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n[![Current Version](https://img.shields.io/github/r-package/v/insightsengineering/teal/main?color=purple\\\u0026label=package%20version)](https://github.com/insightsengineering/teal/tree/main)\n[![Open Issues](https://img.shields.io/github/issues-raw/insightsengineering/teal?color=red\\\u0026label=open%20issues)](https://github.com/insightsengineering/teal/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc)\n\u003c!-- end badges --\u003e\n\n`teal` is a `shiny`-based interactive exploration framework for analyzing data. `teal` applications require app developers to specify:\n\n\u003c!-- markdownlint-disable MD007 MD030 --\u003e\n-   Data, which can be:\n    -    CDISC data, commonly used for clinical trial reporting\n    -    Independent datasets, for example from a `data.frame`\n    -    Related datasets, for example a set of `data.frames` with key columns to enable data joins\n    -    `MultiAssayExperiment` objects which are `R` data structures for representing and analyzing multi-omics experiments\n-   `teal` modules:\n    -   `teal modules` are `shiny` modules built within the `teal` framework that specify analysis to be performed. For example, it can be a module for exploring outliers in the data, or a module for visualizing the data in line plots. Although these can be created from scratch, many `teal` modules have been released and we recommend starting with modules found in the following packages:\n        -   [`teal.modules.general`](https://insightsengineering.github.io/teal.modules.general/latest-tag/): general modules for exploring relational/independent/CDISC data\n        -   [`teal.modules.clinical`](https://insightsengineering.github.io/teal.modules.clinical/latest-tag/): modules specific to CDISC data and clinical trial reporting\n        -   [`teal.modules.hermes`](https://insightsengineering.github.io/teal.modules.hermes/latest-tag/): modules for analyzing `MultiAssayExperiment` objects\n\n\u003c!-- markdownlint-enable MD007 MD030 --\u003e\n\nA lot of the functionality of the `teal` framework derives from the following packages:\n\n\u003c!-- markdownlint-disable MD007 MD030 --\u003e\n-   [`teal.data`](https://insightsengineering.github.io/teal.data/latest-tag/): creating and loading the data needed for `teal` applications.\n-   [`teal.widgets`](https://insightsengineering.github.io/teal.widgets/latest-tag/): `shiny` components used within `teal`.\n-   [`teal.slice`](https://insightsengineering.github.io/teal.slice/latest-tag/): provides a filtering panel to allow filtering of data.\n-   [`teal.code`](https://insightsengineering.github.io/teal.code/latest-tag/): handles reproducibility of outputs.\n-   [`teal.logger`](https://insightsengineering.github.io/teal.logger/latest-tag/): standardizes logging within `teal` framework.\n-   [`teal.reporter`](https://insightsengineering.github.io/teal.reporter/latest-tag/): allows `teal` applications to generate reports.\n\nDive deeper into `teal` with our comprehensive video guide.\nPlease click the image below to start learning:\n\n[![A Complete Guide to Getting Started with teal](https://img.youtube.com/vi/N8ZamECICSI/0.jpg)](https://www.youtube.com/watch?v=N8ZamECICSI)\n\n\u003c!-- markdownlint-enable MD007 MD030 --\u003e\n\n## Installation\n\n```r\ninstall.packages(\"teal\")\n```\n\nAlternatively, you might also use the development version.\n\n```r\n# install.packages(\"pak\")\npak::pak(\"insightsengineering/teal\")\n```\n\n## Usage\n\n```r\nlibrary(teal)\n\napp \u003c- init(\n  data = teal_data(iris = iris),\n  modules = list(\n    module(\n      label = \"iris histogram\",\n      server = function(input, output, session, data) {\n        updateSelectInput(session = session,\n                          inputId =  \"var\",\n                          choices = names(data()[[\"iris\"]])[1:4])\n\n        output$hist \u003c- renderPlot({\n          req(input$var)\n          hist(x = data()[[\"iris\"]][[input$var]])\n        })\n      },\n      ui = function(id) {\n        ns \u003c- NS(id)\n        list(\n          selectInput(inputId = ns(\"var\"),\n                      label =  \"Column name\",\n                      choices = NULL),\n          plotOutput(outputId = ns(\"hist\"))\n        )\n      }\n    )\n  )\n)\n\nshinyApp(app$ui, app$server)\n```\n\n![App recording](man/figures/readme_app.webp)\n\nPlease see [`teal.gallery`](https://insightsengineering.github.io/teal.gallery/) and [TLG Catalog](https://insightsengineering.github.io/tlg-catalog/) to see examples of `teal` apps.\n\nPlease start with the [\"Technical Blueprint\" article](https://insightsengineering.github.io/teal/latest-tag/articles/blueprint/index.html), [\"Getting Started\" article](https://insightsengineering.github.io/teal/latest-tag/articles/getting-started-with-teal.html), and then other [package vignettes](https://insightsengineering.github.io/teal/latest-tag/articles/index.html) for more detailed guide.\n\n## Getting help\n\nIf you encounter a bug or have a feature request, please file an issue. For questions, discussions, and updates, use the `teal` channel in the [`pharmaverse` slack workspace](https://pharmaverse.slack.com).\n\n## Acknowledgment\n\nThis package is a result of a joint efforts by many developers and stakeholders. We would like to thank everyone who contributed so far!\n\n## Stargazers and Forkers\n\n### Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/insightsengineering/teal.svg)](https://starchart.cc/insightsengineering/teal)\n\n### Stargazers\n\n[![Stargazers repo roster for @insightsengineering/teal](http://reporoster.com/stars/insightsengineering/teal)](https://github.com/insightsengineering/teal/stargazers)\n\n### Forkers\n\n[![Forkers repo roster for @insightsengineering/teal](http://reporoster.com/forks/insightsengineering/teal)](https://github.com/insightsengineering/teal/network/members)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsightsengineering%2Fteal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finsightsengineering%2Fteal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsightsengineering%2Fteal/lists"}