Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .Rbuildignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
^renv$
^renv\.lock$
^.*\.Rproj$
^\.Rproj\.user$
^app\.R$
Expand Down
1 change: 1 addition & 0 deletions .Rprofile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
source("renv/activate.R")
79 changes: 39 additions & 40 deletions README.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,21 @@ knitr::opts_chunk$set(
library(emo)
```

# wedding <img src="man/figures/logo.png" align="right" alt="" width="120" />
# wedding <img src="man/figures/logo.png" align="right" width="120"/>

<!-- badges: start -->
[![R-CMD-check](https://github.com/ThinkR-open/wedding/workflows/R-CMD-check/badge.svg)](https://github.com/ThinkR-open/wedding/actions)
[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental)

[![R-CMD-check](https://github.com/ThinkR-open/wedding/workflows/R-CMD-check/badge.svg)](https://github.com/ThinkR-open/wedding/actions) [![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental)

<!-- badges: end -->

{wedding} helps you to prepare and manage your wedding `r emo::ji("bride_with_veil")``r emo::ji("bride_with_veil")` - `r emo::ji("bride_with_veil")``r emo::ji("man_in_tuxedo")` - `r emo::ji("man_in_tuxedo")``r emo::ji("man_in_tuxedo")`
{wedding} helps you to prepare and manage your wedding ``` r emo::ji("bride_with_veil")``r emo::ji("bride_with_veil") ``` - ``` r emo::ji("bride_with_veil")``r emo::ji("man_in_tuxedo") ``` - ``` r emo::ji("man_in_tuxedo")``r emo::ji("man_in_tuxedo") ```

## Demo

An example of the app is available here: http://connect.thinkr.fr/wedding
An example of the app is available here: <http://connect.thinkr.fr/wedding>

Login to access the app: _welcome_ <br />
Password to access the app: _bigday_ <br />
Password to access the tab dedicated to brides/grooms: _onlyforbride_
Login to access the app: *welcome* <br /> Password to access the app: *bigday* <br /> Password to access the tab dedicated to brides/grooms: *onlyforbride*

```{r echo=FALSE}
knitr::include_graphics("man/figures/home-page.png")
Expand All @@ -39,23 +38,23 @@ You will find below how to run this demo app from RStudio Cloud.

## Highlights

- Secure access via a login and password authentication system
- Information about the wedding day (schedule, accomodation, etc.)
- RSVP feature where guests can specify their presence at the different times of the wedding, their choice for the diner menu and their diet - 2 types of RSVP features are proposed here (see additional details in the RSVP feature section of this README)
- Dashboard - only accessible with login and password - where bride/grooms can manage the preparations for their wedding (guests, expenses, table plan)
- Data stored in Google sheets
- Design in line with the wedding announcement (colors, fonts, etc.)
- Secure access via a login and password authentication system
- Information about the wedding day (schedule, accomodation, etc.)
- RSVP feature where guests can specify their presence at the different times of the wedding, their choice for the diner menu and their diet - 2 types of RSVP features are proposed here (see additional details in the RSVP feature section of this README)
- Dashboard - only accessible with login and password - where bride/grooms can manage the preparations for their wedding (guests, expenses, table plan)
- Data stored in Google sheets
- Design in line with the wedding announcement (colors, fonts, etc.)

## Meaning of the tabs

- *Accueil*: Home
- *Confirmer ma venue*: Confirm my presence
- *Programme de la journée*: Program of the day
- *Lieu du mariage*: Location of the wedding
- *Hébergements*: Accommodations
- *Témoins*: Witnesses
- *Covid*: Covid rules
- *Espace des mariés*: Groom's area (expenses, guests, menu, `{ggplot2}` seating plan)
- *Accueil*: Home
- *Confirmer ma venue*: Confirm my presence
- *Programme de la journée*: Program of the day
- *Lieu du mariage*: Location of the wedding
- *Hébergements*: Accommodations
- *Témoins*: Witnesses
- *Covid*: Covid rules
- *Espace des mariés*: Groom's area (expenses, guests, menu, `{ggplot2}` seating plan)

```{r echo=FALSE}
knitr::include_graphics("man/figures/seating-plan-page.png")
Expand All @@ -69,8 +68,8 @@ The application is based on two datasets stored on Google Drive. They will be **
knitr::include_graphics("man/figures/data-examples.png")
```

- **data_guests**: contains information about your guests (name, attendance at the vin d'honneur, attendance at the dinner, attendance at the return on Sunday lunch, special diet, etc.).
- **data_expenses**: contains information about the wedding expenses (venue, caterer, groom's outfit, wedding rings, etc.)
- **data_guests**: contains information about your guests (name, attendance at the vin d'honneur, attendance at the dinner, attendance at the return on Sunday lunch, special diet, etc.).
- **data_expenses**: contains information about the wedding expenses (venue, caterer, groom's outfit, wedding rings, etc.)

Structure of the datasets can be explored with:

Expand All @@ -89,22 +88,22 @@ data("data_guests_example")
data_guests_example
```

Raw toy datasets can be accessed directly here:
Raw toy datasets can be accessed directly here:

- [**data_guests**](https://docs.google.com/spreadsheets/d/1uCENmsM7XEcqE_ae80uYUMU6EA_-ozKqHyGJXHJHDiU/edit?usp=sharing)
- [**data_expenses**](https://docs.google.com/spreadsheets/d/1Mb6QPB2G2Msy-K9xnU6Cs8qJ32i5eMdTvY9hh1mJwKw/edit?usp=sharing)
- [**data_guests**](https://docs.google.com/spreadsheets/d/1uCENmsM7XEcqE_ae80uYUMU6EA_-ozKqHyGJXHJHDiU/edit?usp=sharing)
- [**data_expenses**](https://docs.google.com/spreadsheets/d/1Mb6QPB2G2Msy-K9xnU6Cs8qJ32i5eMdTvY9hh1mJwKw/edit?usp=sharing)

## RSVP feature

2 types of features are proposed here :

- You can create your guest list beforehand. Your spreadsheet is pre-filled. The guests will be asked to select their first name from a **drop-down list**. *This is the default feature for the app.*
- You can create your guest list beforehand. Your spreadsheet is pre-filled. The guests will be asked to select their first name from a **drop-down list**. *This is the default feature for the app.*

```{r echo=FALSE, out.width='70%', fig.align='center'}
knitr::include_graphics("man/figures/rsvp_list.png")
```

- Or you do not create your guest list beforehand. At the beginning, your spreadsheet is empty. In this case, the guests will be asked to indicate their first name in a **free text zone**. You will need to go to the spreadsheet regularly to associate guests to a table in your seating plan.
- Or you do not create your guest list beforehand. At the beginning, your spreadsheet is empty. In this case, the guests will be asked to indicate their first name in a **free text zone**. You will need to go to the spreadsheet regularly to associate guests to a table in your seating plan.

```{r echo=FALSE, out.width='70%', fig.align='center'}
knitr::include_graphics("man/figures/rsvp_text.png")
Expand All @@ -114,25 +113,26 @@ knitr::include_graphics("man/figures/rsvp_text.png")

#### To use the non pre-filled list and the free text zone:

- Define an extra environment variable:
- Define an extra environment variable:

``` r
Sys.setenv(USE_PREFILLED_DATA_GUEST = "no")
```

- Call your spreadsheet in Google Drive **data_guests_not_pre_filled**, not *data_guests* (default). A raw toy dataset can be accessed directly here: [**data_guests_not_pre_filled**](https://docs.google.com/spreadsheets/d/1qJo_UiHx0qjjqEncT2NCYAoFMycozKxrShGcun7Qokw/edit?usp=sharing)
- Call your spreadsheet in Google Drive **data_guests_not_pre_filled**, not *data_guests* (default). A raw toy dataset can be accessed directly here: [**data_guests_not_pre_filled**](https://docs.google.com/spreadsheets/d/1qJo_UiHx0qjjqEncT2NCYAoFMycozKxrShGcun7Qokw/edit?usp=sharing)

## Run the demo app from RStudio Cloud

- Save the two toy datasets (see above) in your Google Drive storage
- Acess the project stored in RStudio Cloud: https://rstudio.cloud/project/2548794
- In Git tab, check that you are in the *main* branch and pull the latest version of the branch
- Install `{wedding}`
- Save the two toy datasets (see above) in your Google Drive storage
- Acess the project stored in RStudio Cloud: <https://rstudio.cloud/project/2548794>
- In Git tab, check that you are in the *main* branch and pull the latest version of the branch
- Install `{wedding}`

``` r
remotes::install_github("ThinkR-open/wedding")
```

- Create environment variables mandatory for the app
- Create environment variables mandatory for the app

``` r
Sys.setenv(GOOGLE_MAIL = "wedding.r.package@gmail.com") # Replace wedding.r.package@gmail.com by your gmail adress
Expand All @@ -142,19 +142,18 @@ Sys.setenv(PWD_COUPLE = "onlyforbride")
Sys.setenv(IMG_BACKGROUND = "wedding-background-demo-compressed.jpg")
```

- Create and store the credentials for Google account - A popup will open, and you will be asked to write your password - This will create a token and will store it in a .secrets folder
- Create and store the credentials for Google account - A popup will open, and you will be asked to write your password - This will create a token and will store it in a .secrets folder

``` r
# install.packages(c("gargle", "googledrive"))
options(gargle_oauth_cache = ".secrets")
options(gargle_quiet = FALSE)
options(gargle_verbosity = "debug")
googledrive::drive_auth(cache = ".secrets",
email = Sys.getenv("GOOGLE_MAIL"))
```

- Run the demo app
- Run the demo app

``` r
wedding::run_app()
```

Loading