Welcome! This is a collection of small, easy-to-use apps for lab and data work. You can run any app by itself, or use the main launcher to pick from a menu.
- Open RStudio.
- Open the file
app_launcher.R. - Click the Run App button at the top of RStudio.
- In the app window, choose a tool from the dropdown menu.
- Use the app! If you get stuck, see the FAQ below or contact support.
- Quickly make plots or randomize samples for lab work
- Use simple tools for common data tasks
- No coding needed—just click and go!
Q: I see an error or the app won’t start! A: Close RStudio and try again. If it still doesn’t work, contact support (see below).
Q: Can I use two apps together or share data between them? A: No, each app is separate for safety. If you need this, contact support.
Q: I want a new tool or feature! A: Great! Email your idea to support.
If you have any questions, problems, or want a new feature, please contact:
Sumedh Sankhe
Email: sumedh.sankhe@gmail.com
- App: A small tool you can run from the menu.
- Launcher: The main menu that lets you pick which app to use.
- Module: (For developers) A technical term for each app/tool.
- RStudio: The program you use to run these apps.
Small-Shiny-Apps-Platform/
├── app_launcher.R # Main launcher for Small Shiny Apps Platform
├── modules_list.json # Registry of available modules
├── R/ # All modules live here, each in its own folder
│ ├── Module_Template/ # Template for new modules
│ │ └── app.R
│ └── New_Module/ # (Example) Your new module folder
│ └── app.R
├── renv/ # Project-local R package library
├── README.md
└── ...
- Copy
R/Module_TemplatetoR/Your_New_Module. - Rename the UI/server functions in
app.Rto match your module. - Add any data or helper scripts inside your module folder.
- Register your module in
modules_list.json(see below).
Best Practices: - Keep each module self-contained for easy reuse and maintenance. - Use the {box} package for explicit imports (see below). - Document your module at the top of its app.R file.
Do NOT include large data files or any files totaling more than 50MB in this repository.
- Large files can cause problems with version control, sharing, and deployment.
- If your app requires large data, use a small sample or synthetic dataset for development, and document how to obtain or link to the real data externally.
- Use processed and sanitized data stored as .rds or .rda files
All modules in this repository should use the {box} package for explicit, modular imports instead of library() or :: calls. This ensures that dependencies are clear, only the needed functions are imported, and there is no global namespace pollution.
Note: The shiny package is provided in the global scope by the launcher platform, so you do not strictly need to import shiny with box::use in your module. However, using box::use for shiny is recommended for explicitness and consistency, especially if you want to test your module standalone or reuse it elsewhere.
How to use {box} in your module:
- At the top of your
app.R(or module file), import only the functions you need from each package:
box::use(
shiny[fluidPage, NS, textInput, textOutput, renderText, ...],
bslib[layout_column_wrap, card, card_title, card_body],
markdown[markdownToHTML]
)- When calling imported functions inside your module, use them directly (e.g.,
fluidPage(...)), except inside a function body (likeserver) where you must use the namespace (e.g.,shiny$renderText(...)).
- This is required because of how {box} handles scoping.
- Do not use
library()or::in your module code. - See
R/Module_Template/app.Rfor a complete example.
Best practices: - Only import the functions you actually use. - Use the shiny$ prefix for Shiny functions inside server functions. - Keep all imports at the top of your file for clarity.
For more details, see the box documentation.
-
Open
modules_list.jsonin any text editor. -
Each module entry should look like:
{ "id": "your_module_id", "label": "Your Module Name", "source": "R/Your_Module_Folder/app.R", "ui": "your_module_ui", "server": "your_module_server" } -
The
idmust be unique and match the folder/function naming.
- R (>= 4.0)
- R packages: shiny, jsonlite, (and any packages required by your modules)
- Use
renvto manage dependencies:renv::restore() - For using any additional packages that are required use the
renv::install("packageName", lock = TRUE)