{
  "_id": "6acfd12be2d863f662953166",
  "Package": "brochure",
  "Title": "Multipage 'Shiny' Apps",
  "Version": "1.0.0",
  "Authors@R": "person(\"Colin\", \"Fay\", , \"contact@colinfay.me\", role = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ORCID = \"0000-0001-7343-1846\"))",
  "Description": "Build natively multi-page 'Shiny' applications, serving\ncontent on several endpoints instead of a single page. Pages\nare declared with their own user interface and server function\nand are dispatched by URL with 'routr', including parameterised\nroutes. Redirections, request and response middleware, and\nhelpers to read and set cookies are also provided.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/colinfay/brochure,\nhttps://github.com/ColinFay/brochure",
  "BugReports": "https://github.com/ColinFay/brochure/issues",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "Encoding": "UTF-8",
  "Config/roxygen2/version": "8.0.0",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-14 18:56:52 UTC",
    "User": "root"
  },
  "Author": "Colin Fay [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0001-7343-1846>)",
  "Maintainer": "Colin Fay <contact@colinfay.me>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-10-14 11:10:22 UTC",
  "RemoteUrl": "https://github.com/cran/brochure",
  "RemoteRef": "HEAD",
  "RemoteSha": "ff64e44e3d1d393b339bab6bf60c4ad5dd2ecd62",
  "_user": "cran",
  "_type": "src",
  "_file": "brochure_1.0.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/57e7b900bcd8f5115d17bc1c78b674d11a31226137e2d15dbc0a92f4c773cd35",
  "_filesize": 266192,
  "_sha256": "57e7b900bcd8f5115d17bc1c78b674d11a31226137e2d15dbc0a92f4c773cd35",
  "_expires": "2027-01-22T18:59:53.000Z",
  "_created": "2026-10-14T18:56:52.000Z",
  "_published": "2026-10-14T18:59:55.268Z",
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/38619023806",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 116043210630,
      "time": 127,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11922510428"
    },
    {
      "job": 116043210546,
      "time": 125,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11920853550"
    },
    {
      "job": 116041614746,
      "time": 195,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11921865456"
    },
    {
      "job": 116043211018,
      "time": 124,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11920898229"
    },
    {
      "job": 116043210726,
      "time": 80,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11922370417"
    },
    {
      "job": 116043210873,
      "time": 99,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11921186445"
    }
  ],
  "_upstream": "https://github.com/cran/brochure",
  "_commit": {
    "id": "ff64e44e3d1d393b339bab6bf60c4ad5dd2ecd62",
    "author": "Colin Fay <contact@colinfay.me>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 1.0.0\n",
    "time": 1791976222
  },
  "_maintainer": {
    "name": "Colin Fay",
    "email": "contact@colinfay.me",
    "login": "colinfay",
    "twitter": "@_ColinFay",
    "description": "👨‍💻 Data Science and Engineering at @ThinkR-open. \n\"Chaotic good developer\". \nLoves building things, loves breaking things. \nRuns 🏃‍♂️. \nEats plants 🌱.",
    "uuid": 17936236,
    "orcid": "0000-0001-7343-1846"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "attempt",
      "version": ">= 0.3.1",
      "role": "Imports"
    },
    {
      "package": "htmltools",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "version": ">= 0.4.12",
      "role": "Imports"
    },
    {
      "package": "routr",
      "version": ">= 2.0.0",
      "role": "Imports"
    },
    {
      "package": "shiny",
      "version": ">= 1.6.0",
      "role": "Imports"
    },
    {
      "package": "golem",
      "version": ">= 0.3.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "usethis",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-42",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "1.0.0",
      "date": "2026-10-14"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "colinfay",
      "count": 1,
      "uuid": 17936236
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 630,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/brochure"
  },
  "_devurl": "https://github.com/colinfay/brochure",
  "_searchresults": 34,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/brochure.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_cranurl": false,
  "_releases": [
    {
      "version": "1.0.0",
      "date": "2026-10-14"
    }
  ],
  "_exports": [
    "brochureApp",
    "get_cookies",
    "get_keys",
    "golem_hook",
    "new_page",
    "page",
    "parse_cookie_string",
    "redirect",
    "remove_cookie",
    "server_redirect",
    "set_cookie"
  ],
  "_help": [
    {
      "page": "brochureApp",
      "title": "Create a brochureApp",
      "topics": [
        "brochureApp"
      ]
    },
    {
      "page": "get_keys",
      "title": "Get the keys of a parameterised page",
      "topics": [
        "get_keys"
      ]
    },
    {
      "page": "golem_hook",
      "title": "Golem Hook function",
      "topics": [
        "golem_hook"
      ]
    },
    {
      "page": "new_page",
      "title": "Add page",
      "topics": [
        "new_page"
      ]
    },
    {
      "page": "page",
      "title": "A Brochure Page",
      "topics": [
        "page"
      ]
    },
    {
      "page": "cookies-server-side",
      "title": "Read the cookies sent with a request",
      "topics": [
        "get_cookies",
        "parse_cookie_string"
      ]
    },
    {
      "page": "redirect",
      "title": "Redirection",
      "topics": [
        "redirect"
      ]
    },
    {
      "page": "server_redirect",
      "title": "Do a server side redirection",
      "topics": [
        "server_redirect"
      ]
    },
    {
      "page": "cookie-middleware",
      "title": "Middleware to set cookies",
      "topics": [
        "remove_cookie",
        "set_cookie"
      ]
    }
  ],
  "_pkglogo": "https://github.com/cran/brochure/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/cran/brochure/raw/HEAD/README.md",
  "_rundeps": [
    "attempt",
    "base64enc",
    "brio",
    "brotli",
    "bslib",
    "cachem",
    "cli",
    "commonmark",
    "curl",
    "digest",
    "fastmap",
    "fontawesome",
    "fs",
    "glue",
    "htmltools",
    "httpuv",
    "jquerylib",
    "jsonlite",
    "later",
    "lifecycle",
    "magrittr",
    "memoise",
    "mime",
    "mirai",
    "nanonext",
    "otel",
    "promises",
    "purrr",
    "R6",
    "rappdirs",
    "Rcpp",
    "reqres",
    "rlang",
    "routr",
    "sass",
    "shiny",
    "sodium",
    "sourcetools",
    "stringi",
    "triebeard",
    "urltools",
    "vctrs",
    "waysign",
    "webutils",
    "withr",
    "xml2",
    "xtable"
  ],
  "_vignettes": [
    {
      "source": "cookies.Rmd",
      "filename": "cookies.html",
      "title": "Cookies and state between pages",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Setting a cookie",
        "Reading it back",
        "Removing it",
        "A session across pages"
      ],
      "created": "2026-10-14 11:10:22",
      "modified": "2026-10-14 11:10:22",
      "commits": 1
    },
    {
      "source": "deployment.Rmd",
      "filename": "deployment.html",
      "title": "Deploying behind a reverse proxy",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Does this concern you?",
        "Why a prefix is a problem here",
        "The fix",
        "On Posit Connect",
        "Reading the symptoms",
        "Writing links that survive",
        "Test it deployed",
        "What happens under the hood"
      ],
      "created": "2026-10-14 11:10:22",
      "modified": "2026-10-14 11:10:22",
      "commits": 1
    },
    {
      "source": "design.Rmd",
      "filename": "design.html",
      "title": "Designing a multipage app",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Coming from a single page app",
        "Navigation is a link",
        "What every page shares",
        "Where state goes",
        "What a navigation costs",
        "Several visitors at once",
        "When not to reach for brochure",
        "Where to go next"
      ],
      "created": "2026-10-14 11:10:22",
      "modified": "2026-10-14 11:10:22",
      "commits": 1
    },
    {
      "source": "brochure.Rmd",
      "filename": "brochure.html",
      "title": "Getting started with brochure",
      "engine": "knitr::rmarkdown",
      "headings": [
        "A page",
        "An app",
        "Something on every page",
        "How a url finds its page",
        "When no page matches",
        "Reading the parameters",
        "Redirections",
        "Middleware",
        "Behind a reverse proxy",
        "What's next"
      ],
      "created": "2026-10-14 11:10:22",
      "modified": "2026-10-14 11:10:22",
      "commits": 1
    },
    {
      "source": "handlers.Rmd",
      "filename": "handlers.html",
      "title": "Request and response handlers",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The order things run in",
        "Logging every request",
        "Answering before Shiny",
        "Rejecting a request",
        "Changing the response",
        "Page level or app level",
        "Pages that answer on another method"
      ],
      "created": "2026-10-14 11:10:22",
      "modified": "2026-10-14 11:10:22",
      "commits": 1
    },
    {
      "source": "testing.Rmd",
      "filename": "testing.html",
      "title": "Testing a brochure app",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The routing",
        "Everything else the response carries",
        "Which server a session runs",
        "What a page computes",
        "In a browser"
      ],
      "created": "2026-10-14 11:10:22",
      "modified": "2026-10-14 11:10:22",
      "commits": 1
    },
    {
      "source": "golem.Rmd",
      "filename": "golem.html",
      "title": "Using brochure with golem",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What changes",
        "A fresh app",
        "Adding a page",
        "Wiring it up",
        "Adapting an existing golem app",
        "What stays golem"
      ],
      "created": "2026-10-14 11:10:22",
      "modified": "2026-10-14 11:10:22",
      "commits": 1
    }
  ],
  "_score": 4.075546961392531,
  "_indexed": false,
  "_nocasepkg": "brochure",
  "_universes": [
    "cran",
    "colinfay"
  ],
  "_indexurl": "https://colinfay.r-universe.dev/brochure",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-10-14T18:59:05.000Z",
      "distro": "resolute",
      "commit": "ff64e44e3d1d393b339bab6bf60c4ad5dd2ecd62",
      "fileid": "https://r2.ropensci.org/b684c05611a912b208e4b31e6c21e496d4723d28bf71d399d40e21de59a05762",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38619023806"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.0.0",
      "date": "2026-10-14T18:59:02.000Z",
      "distro": "resolute",
      "commit": "ff64e44e3d1d393b339bab6bf60c4ad5dd2ecd62",
      "fileid": "https://r2.ropensci.org/f40e89a0cda57364ca7502de645a924dd47674543fc437b1a2e20566d9c256f2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38619023806"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.0",
      "date": "2026-10-14T18:59:19.000Z",
      "commit": "ff64e44e3d1d393b339bab6bf60c4ad5dd2ecd62",
      "fileid": "https://r2.ropensci.org/514c13f8370ed2bef98baafb90a42a8f810ddcda4f6d5cd42953716f4dff4338",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38619023806"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-10-14T18:58:10.000Z",
      "commit": "ff64e44e3d1d393b339bab6bf60c4ad5dd2ecd62",
      "fileid": "https://r2.ropensci.org/189731d3fc5326c143e3c273ee982ee98e33a429ffc26cd4e1ece7f1a0b34a31",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38619023806"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.0.0",
      "date": "2026-10-14T18:58:26.000Z",
      "commit": "ff64e44e3d1d393b339bab6bf60c4ad5dd2ecd62",
      "fileid": "https://r2.ropensci.org/ba8657651eada68065c294f40d3910d6d738ed4d271ff691031aa0499d3d9678",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38619023806"
    }
  ]
}