The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
aurora_app() now sources helpers/*.R into a
dedicated environment (parented on the global env) and parses each
router with parse_file(env = ) so handlers still resolve
helpers, without anything landing in .GlobalEnv.aurora_shinyproxy_yaml() and
aurora_ruscker_yaml() take file = NULL and
require an explicit path when write = TRUE (no writes to
getwd() by default).DESCRIPTION adds an auto-linked reference to the
‘plumber2’ web framework.aurora_dockerfile() default pin bumped to
@v0.1.12.aurora_ruscker_yaml() emits a Ruscker app spec
for a built aurora image, the counterpart to
aurora_shinyproxy_yaml(). Ruscker is a lightweight
ShinyProxy alternative that reads the same application.yml
schema; since an aurora app is a stateless ‘plumber2’ API, the spec uses
type: api with an api: block
(port, docs-path, health-path,
optional rate-limit/cors) and a replica pool
(min-replicas/max-replicas). See
vignette("deploy").aurora_dockerfile() default pin bumped to
@v0.1.11 (now @v0.1.12).README.md now points to the canonical
https://plumber2.posit.co/ (the old
https://posit-dev.github.io/plumber2/ returned a 301
redirect, flagged by CRAN incoming checks).
aurora_dockerfile() default pin bumped to
@v0.1.10.aurora_dockerfile() default pin bumped to
@v0.1.9._aurora.yml gains an optional statics: key
– a map of URL prefix to directory, served by aurora_app()
at that prefix in addition to www/ at /. Lets
several apps share assets (logo, JS libraries, CSS) from one server-side
directory mounted as a volume. Relative paths resolve against the app
root; a missing directory (e.g. an unmounted volume) is skipped with a
warning so the app still starts. The root path / stays
reserved for www/. See vignette("deploy") and
ADR-018.aurora_dockerfile(aurora_source = ) default pin bumped
to @v0.1.8..dockerignore is bundled un-hidden (as
dockerignore) and renamed by
aurora_create_app(); the empty
www//www/images/ .gitkeep
placeholders are gone (the scaffold creates www/images/
itself). Scaffolded apps are unchanged.
R CMD check --as-cran is now 0/0/0.aurora_dockerfile(aurora_source = ) default pin bumped
to @v0.1.7.aurora_build_image(platform = ) selects the image’s
target platform via docker build --platform, defaulting to
"linux/amd64" so images built on Apple Silicon run on the
usual x86-64 servers (an arm64 image fails there with
exec format error). Pass platform = NULL to
build for the host architecture.aurora_dockerfile(aurora_source = ) default pin bumped
to @v0.1.6.aurora_dockerfile(locale = ) now defaults to
"pt_BR.UTF-8" (matching the
tz = "America/Recife" default). Pass
locale = "C.UTF-8" for the universal UTF-8 locale, or any
other.apt-get install locales +
locale-gen), since the rocker/Ubuntu base ships only
en_US.UTF-8. Combined with the alpine musl-locales support,
a non-C locale works on both flavors out of the box.aurora_dockerfile(locale = ) controls the image
ENV LANG/LC_ALL (default
"C.UTF-8"), pairing with tz =.tz and locale arguments are now validated
at generation time: an unknown timezone (not in
OlsonNames()) errors instead of silently falling back to
UTC in the container; a non-UTF-8 locale warns.pt_BR.UTF-8) now
installs the musl-locales/musl-locales-lang
packages so it actually resolves in R. musl support is partial
(charset/messages apply; collation falls back to C).ENV TZDIR=/usr/share/zoneinfo
(alongside tzdata) so the baked timezone actually resolves
in R. r-minimal strips R’s bundled zoneinfo, so without
TZDIR R warned “unknown timezone” and fell back to UTC
despite tzdata being installed.tzdata whenever
aurora_dockerfile(tz = ) is set (the default). Alpine ships
no timezone database, so ENV TZ previously fell back to
UTC; with tzdata the timezone
(e.g. America/Recife) resolves in the OS, R, and DB
drivers.Hardening and ergonomics distilled from migrating and containerizing a real app.
aurora_config() reads data/config.yml
anchored to the app root (no cwd pitfall).aurora_check() lints an app: UI code in runtime
helpers, packages used but undeclared in _aurora.yml,
missing prebuilt UI.aurora_unbox() /
aurora_geojson() / aurora_unique() (NULL-safe
unbox / sf -> GeoJSON / sorted-unique).aurora_app(attach = ) /
_aurora.yml: attach: attaches the declared runtime
packages: before sourcing helpers, so handlers can call
them unqualified.aurora_run(on_exit = ) runs a cleanup function when the
server stops (e.g. pool::poolClose()), on plumber2’s
"end" lifecycle event.aurora_dockerfile(tz = ) bakes ENV TZ
(default America/Recife); the default
aurora_source is pinned to a release tag for reproducible
builds.config::get("data/config.yml"),
readRDS("data/x.rds")) resolve as they did under the
plumber-v1 entrypoint.loadNamespace
error.sf
-> gdal/geos/proj, RPostgres -> libpq, …) plus
gfortran/libgfortran; .dockerignore excludes
data/.First release (2026-06-01). A complete dev loop, theming, UI↔︎API
wiring, opt-in auth/data/telemetry, Docker/ShinyProxy generation, three
worked examples, and a pkgdown site. R CMD check is clean
(0 errors / 0 warnings).
aurora_create_app() (templates: minimal,
auth), aurora_build_ui(),
aurora_app(), aurora_run(),
aurora_add_route().aurora_run(watch = TRUE): live-reload rebuilds the
static UI when build_ui.R/ui_modules/ change
(polls via later).minimal
template ships _brand.yml and uses
bs_theme(version = 5, brand = TRUE); bslib bakes the theme
into the static HTML at build time. aurora builds no theming layer.aurora_component(): thin helper emitting an element
wired to a JSON endpoint via data-endpoint; app JS renders.
No rendering JS shipped.aurora_auth_jwt() +
aurora_jwt_token(), aurora_jwt_decode(),
aurora_jwt_guard(), aurora_set_auth_cookie(),
aurora_clear_auth_cookie(). The auth template
gates /api/* with a @header guard and
reqres::abort_unauthorized().aurora_data_store() +
aurora_data_register(), aurora_data_get(),
aurora_data_names(): globals-free store that hot-reloads a
dataset when its file changes on disk.aurora_run(otel = TRUE) /
aurora_app(otel=) / AURORA_OTEL — wires
api_logger(logger_otel()), off by default.aurora_dockerfile() with a flavor
argument: "debian" (default; rocker/r-ver +
Posit Package Manager binaries) or "alpine"
(rhub/r-minimal
installr, a tiny source-built image).
aurora_build_image() and
aurora_shinyproxy_yaml() (emits a ShinyProxy
proxy.specs block).See the package website for the full reference and articles.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.