modUpload is the most complex Shiny UI module in the Artalytics platform, providing comprehensive artwork upload, validation, and async processing. It handles the complete ingestion workflow from file upload through advanced image/video analysis pipelines. Designed to be embedded in appPlatform, not deployed as a standalone application.
System Requirements
modUpload requires 11 system libraries for full functionality. These are specified in the DESCRIPTION SystemRequirements field and are automatically installed by {pak} during package installation.
The required libraries include:
- ImageMagick++ - Image processing and analysis
- FFmpeg - Video frame extraction
- Tesseract OCR - Text recognition
- ExifTool - Metadata extraction
- Poppler - PDF processing
- Plus numerical libraries (Armadillo, BLAS/LAPACK, ARPACK, FFTW3)
Installation
# Requires GITHUB_PAT for private repo access
pak::pkg_install("artalytics/modUpload"){pak} will automatically install required system dependencies from the SystemRequirements field.
Environment Variables
modUpload 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
Application Mode (via artcore): - ART_RUNAS_DEMO - Enable demo mode (disables write operations)
See dependency package READMEs for full variable documentation.
Quick Example
library(shiny)
library(bslib)
library(modUpload)
ui <- bslib::page_fluid(
modUploadUI("upload")
)
server <- function(input, output, session) {
r <- reactiveValues(
artist = "746b8207-72f5-4ab6-8d19-a91d03daec3d"
)
observe({
r$appdata <- artutils::get_appdata(r$artist, r$artwork)
})
modUploadServer("upload", r)
}
shinyApp(ui, server)Package Hierarchy
appPlatform (main application)
|
modUpload (upload/ingestion) - modGallery, modBrowse, modFrames (display)
|
artutils, artpixeltrace, artpipelines (processing)
|
artcore (infrastructure: DB, CDN, workflows)
modUpload depends on artutils, artcore, artshiny, artpixeltrace, and artpipelines. It is used by appPlatform.
Key Features
- Multi-Step Wizard - Guided artwork submission with validation
- Async Processing - Background pipeline with progress monitoring
- Multiple File Types - Images, videos, canvas files
- Validation Framework - Comprehensive input validation
- Deduplication - Image hash checking
- Project Management - Artwork organization and purchase links
Documentation
- Get Started - Module overview
- Processing Pipeline - Async workflows
- Validation Framework - Input validation
- Wizard Workflow - UI workflow guide
- Function Reference - Complete API
Development
For AI agent instructions and coding standards, see AGENTS.md.
# Run tests
devtools::test()
# Build documentation
devtools::document()
pkgdown::build_site()Proprietary - Do Not Distribute
