Ideas for separating development and production shiny apps

I have a shiny application that connects to tables in a database. I have R code that creates the database tables and code that creates the shiny app. I want to be able to develop and test new versions of the app (along with new versions of the database tables) while still maintaining a production copy of the app. Once the changes have been vetted then I want to deploy the new version of the application.

I am a novice git user and that seems like an essential tool for this process. I'm thinking of setting up a development schema in the database and development git branches in my code. Then I would host the development version on RSConnect or shiny server along side the production version. Does this seem like a good strategy?

Maybe other shiny developers with more developer experience have suggestions or ideas.

<Note: I don't have the ability to spin up entirely separate development environments/databases/servers etc.>

2 Likes

I'd suggest using Docker.

Some resources:

Having a dev branch in GitHub would definitely be useful. Particularly when you want to release the development version into production. I follow a similar approach to yours where I host dev and prod versions, albeit, I don't have to work with a database.

There are tons of resources on using git. (https://www.atlassian.com/git/tutorials/using-branches)
Once you start using it, I'm sure you'll get used to it.