Precedence: spec.md > sub-spec > Plans.md. This file defines what is correct; Plans.md tracks what to do.
systemPipeShiny (SPS) is a Bioconductor R package that provides a Shiny GUI on top of systemPipeR (SPR). Users who don't know R can create, configure, and run SPR workflows, visualize the results, and build their own Shiny tabs without writing Shiny code.
- Released through Bioconductor. The canonical source is
https://git.bioconductor.org/packages/systemPipeShiny(git remoteupstream); the GitHub mirror issystemPipeR/systemPipeShiny(git remoteorigin). - Branch
develtracks Bioconductor devel. Bioconductor's build system pushes version bumps (x.y.z, with evenyfor release and oddyfor devel), so pull fromupstreambefore starting work. - The package must pass
R CMD buildandR CMD check(including BiocCheck) with no ERRORs or WARNINGs. - AI, agent, and planning files must never be part of the built tarball (see
.Rbuildignore).
The exported functions in NAMESPACE are the public contract. Changing a function's signature or behavior counts as a breaking change and needs a NEWS.md entry.
| Area | Exports |
|---|---|
| App lifecycle | spsInit() creates an app project from inst/app; sps() builds the UI/server |
| Options | spsOptions(), spsOptDefaults() |
| Tabs | spsNewTab(), spsEzUI(), spsEzServer(), spsTabInfo(), removeSpsTab(), spsCoreTabReplace() |
| Data/UI helpers | dynamicFile(), dynamicFileServer(), loadDF(), genGallery(), genHrefTable(), canvasBtn() |
| Accounts / DB (R6) | spsDb, spsEncryption, spsAccount (SQLite-backed, openssl encryption) |
- Workflow: target/metadata editor, workflow step selection, CWL editing, running workflows via systemPipeR.
- Visualization (RNA-seq): normalization, DEG (DESeq2), and plots (PCA, t-SNE, GLM-PCA, heatmap, UpSet, dendrogram).
- Quick ggplot: esquisse-based plotting.
- Canvas: collect, arrange, and export plots across tabs.
- Admin and login: optional user/admin pages, backed by
spsAccount. - Custom tabs: templates in
inst/app/templates, registered throughconfig/tabs.csv.
- Heavy and module-specific packages (systemPipeR, DESeq2, esquisse, …) stay in
Suggests, and modules check for them at runtime (checkModulePkgs_internal). They must not move intoImports. - The app project scaffold (
inst/app) andconfig/sps_options.yamlmust stay in sync withspsOptDefaults(). - Tests under
tests/testthatmust skip, not fail, when the session is non-interactive and an interactive dependency is missing. - Credentials and DB keys are never committed. The SQLite DB is created at
spsInit()time. - R code in
R/never references raw files on external hosting platforms (raw.githubusercontent.com, GitLab, Bitbucket, Dropbox). BiocCheck treats these as an ERROR. Ship the asset ininst/instead, or read the installed copy (e.g.system.file("NEWS.md", package = "systemPipeShiny")).
R CMD build . && R CMD check --as-cran systemPipeShiny_*.tar.gzpasses with 0 ERRORs and 0 WARNINGs.BiocCheck::BiocCheck()reports no ERRORs.testthatpasses.- No lint/formatter baseline is configured yet. Any plan that changes R code should first add a
lintrsetup task.