Rhino Framework for Shiny

repository·main·Indexed 43 days ago

https://github.com/appsilon/rhino

An opinionated framework for building enterprise-grade Shiny applications. Rhino integrates software engineering best practices including modularization via Box, automated unit and E2E testing with Cypress, CI/CD workflows with GitHub Actions, and dependency management with renv.

Tokens
523
Snippets
2
Records
4
Agent score
6%

What's inside Rhino

  1. Overview of Rhino features

    main

    Rhino is an opinionated framework designed to help developers build enterprise-grade Shiny applications using software engineering best practices. It focuses on three main areas:

    1. Clear code: Provides scalable app architecture and modularization using Box and Shiny modules.
    2. Quality: Includes support for unit tests, End-to-End (E2E) tests with Cypress, logging, monitoring, and linting.
    3. Automation: Automates project startup, CI with GitHub Actions, dependency management with renv, configuration management with config, and bundling of Sass and JavaScript (with ES6 support via Node.js).
  2. Access Rhino documentation and tutorials

    main

    The official Rhino documentation is organized into four main sections:

    • Tutorial: The recommended starting point for learning the basics.
    • Explanation: In-depth articles covering Rhino's internal machinery and design philosophy.
    • How-to Guides: Step-by-step instructions for performing common tasks.
    • Reference: Technical details and a list of Rhino functions.

    You can view the documentation at https://appsilon.github.io/rhino/.

  3. Install Rhino

    main

    You can install the stable version of Rhino from CRAN or the development version directly from GitHub using remotes.

    # Stable version
    install.packages("rhino")
    
    # Development version
    remotes::install_github("Appsilon/rhino")
  4. Configure Prettier for Rhino Node templates

    main

    The Rhino Node template uses a Prettier configuration file (prettier.config.mjs) to enforce code style. It includes a specific override for JavaScript files located in the ../app/js/ directory to ensure they use single quotes.

    /** @type {import("prettier").Config} */
    export default {
      overrides: [
        {
          files: "../app/js/**/*.js",
          options: {
            singleQuote: true,
          },
        },
      ],
    };