Organising multiple Shiny apps in one 'ecosystem' of functionality and data. (Is that part of the software development process)

I would like to ask if anyone has experience or best practices when developing multiple Shiny apps that all really on the same data and similar functionality.

My gut feeling would be to store the data in a database and write the functionality into a package.

However, in the case I have now:

  • the data isn't really that much and is stored in a local SQLite file
  • the functionality is also limited and still feels natural in sourced R scripts

Currently apps are running locally and are all stored in the same parent folder, that parent folder also contains a data folder. I'm planning to run the complete parent folder on a server later.

Everything is working fine this way. It just doesn't feel quite right. Mostly because I like to organise thing the RStudio suggested way, and I couldn't find any suggestions on this.

I don't have a computer science/IT background and I'm interested to learn more about structuring larger applications. Would you say that this is part of 'software development'?
I know several R specific topics (writing packages, modularise Shiny apps) but if anyone has some links to resources/courses/etc. about general best practises in Software development I would love to hear it.


I think the answer to get started writing an internal R package. Basically all you need to do to do this is identify the work that is done by several shiny applications, then write those tasks into a function, then deploy those functions on an internal package. If you put that package up on an internal github repository you can use devtools::install_github to install it on the server that is running the shiny app.

I totally think you're already doing software development, but if you want some more background on package best-practices, check out Hadley's book if you haven't already: