Skip to contents

modBrowse is a Shiny UI module for the Artalytics platform that provides interactive collection browsing with artwork cards, filtering, sorting, and statistics display. It is designed to be embedded in appPlatform, not deployed as a standalone application.

Installation

# Requires GITHUB_PAT for private repo access
pak::pkg_install("artalytics/modBrowse")

Environment Variables

modBrowse inherits environment variables from its dependencies:

Database (via artcore): - ART_PGHOST - PostgreSQL host - ART_PGPORT - PostgreSQL port (default: 5432) - ART_PGUSER - Database user - ART_PGPASS - Database password

CDN (via artcore): - ART_BUCKETS_KEY_ID - DigitalOcean Spaces key ID - ART_BUCKETS_KEY_SECRET - Spaces secret key

See dependency package READMEs for full variable documentation.

Quick Example

library(shiny)
library(bslib)
library(modBrowse)

ui <- bslib::page_fluid(
  modBrowseUI("browse")
)

server <- function(input, output, session) {
  r <- reactiveValues(
    artist = "746b8207-72f5-4ab6-8d19-a91d03daec3d"
  )

  observe({
    r$appdata <- artutils::get_appdata(r$artist, r$artwork)
  })

  modBrowseServer("browse", r)
}

shinyApp(ui, server)

Package Hierarchy

appPlatform (main application)
    |
modBrowse, modGallery, modFrames, ... (Shiny modules)
    |
artutils (data access layer)
    |
artcore (infrastructure: DB, CDN)

modBrowse depends on artutils, artcore, and artshiny. It is used by appPlatform.

Key Features

  • Collection Navigation - Browse artworks organized into themed collections
  • Filtering - NFT status, prints available, listed for sale, variants
  • Sorting - By creation date, brush strokes, or drawing time
  • Statistics - Collection metrics with premium value boxes
  • Responsive Design - Desktop checkbox filters, mobile select dropdown
  • Dark Mode - Bootstrap 5 theme support

Documentation

Development

For AI agent instructions and coding standards, see AGENTS.md.

# Run tests
devtools::test()

# Run standalone app for testing
modBrowse::run_app(artist = "746b8207-72f5-4ab6-8d19-a91d03daec3d")

Proprietary - Do Not Distribute