A basic project that’s created with createBasicProject() is the fundamental building block for the various flavours of projects you might build with starters.

A basic project contains a minimal package structure to allow you an easy way to:

  • make functions for use within your work
  • list packages needed for easy dependency management
  • build your outputs using mechanisms aimed at packages

All basic projects contain a DESCRIPTION file, an R/ directory, and an RStudio project file.

Optional extras

We take the opinion that you should have these things by default but they can always be turned off by using the parameters in the creation of a project.


A README is a wonderful introduction to your project and it’s the first thing people see when they look at it on GitHub.

We will create a README.Rmd so that you can write R Markdown and produce a README.md suitable for GitHub.

This enables you to show off your functions, your test results, etc


We take the stance that you should be using source control and that the source control technology you should be using is Git. For the most part, we expect your Git repositories to live on GitHub.

When the project is created all the template aspects will be committed to source control, such that you could import the project into GitHub, or use the command line to push it to GitHub.

As all the projects are created with an RStudio project, you should be able to work with the source control aspects within RStudio. You can also use your preferred shell or GUI to interact with it.



Travis-CI is a free continuous integration tool that allows projects from GitHub to be checked in a clean environment and for further actions to be taken if the project doesn’t have any errors. This is great for checking out your packages work, but it’s also a really useful utility for analysis and training projects as you can use it to build your reproducible documentation and host it for free on GitHub.

The basic project contains a .travis.yml file, which holds instructions for Travis. It won’t interfere in any way with your development process, and to fully enable Travis you need to turn on Travis-CI for the package.



A problem with programming using other people’s code is that other people’s code changes. This risks your results changing over time. To prevent this, there are some R packages which can help us address this.

packrat will build a manifest of package versions based on what you use at the point of production. It will then ensure people use the Packrat defined packages, instead of whatever version they have installed.


checkpoint moves away from using your default CRAN repository and points to a specific repository that has daily snapshots. You then work with CRAN as of a specific date (by default the date you created the project). This is lighter weight than packrat but does not help with non-CRAN packages.


What else?

We’re working on what else should be an optional extra for basic projects and we want your opinions. Contribute your opinion on our GitHub Issues.

Make your own

We think createBasicProject() provides a strong foundation for creating project templates.

To use it as a base for your own internal functions, you will need to import the package and then do something like this as a function wrapper: