# Shiny no Spaces

[Shiny](https://shiny.posit.co/) é um framework de código aberto para criar aplicativos de dados simples, bonitos e com alto desempenho. O objetivo ao desenvolver o Shiny era criar algo simples o suficiente para ensinar a alguém em uma tarde, mas extensível o suficiente para suportar aplicativos grandes e críticos para a missão. Você pode criar um aplicativo Shiny útil em poucos minutos, mas, se o escopo do seu projeto crescer, pode ter certeza de que o Shiny pode acomodar esse aplicativo.

O principal recurso que diferencia o Shiny de outros frameworks é seu modelo de execução reativo. Ao escrever um aplicativo Shiny, o framework inferencia a relação entre entradas, saídas e cálculos intermediários e usa essas relações para renderizar apenas o que precisa ser alterado como resultado de uma ação do usuário. O resultado é que os usuários podem desenvolver facilmente aplicativos eficientes e extensíveis sem precisar explicitamente fazer cache de dados ou escrever funções de callback.

## Shiny para Python

[Shiny for Python](https://shiny.rstudio.com/py/) é uma implementação em Python puro do Shiny. Isso lhe dá acesso a todos os excelentes recursos do Shiny, como reatividade, layouts complexos e módulos, sem a necessidade de usar R. O Shiny for Python é ideal para aplicações do Hugging Face, pois se integra de forma suave com outras ferramentas do Hugging Face.

Para começar a implantar um Space, clique neste botão para selecionar seu hardware e especificar se deseja um Space público ou privado. O modelo do Space preencherá alguns arquivos para iniciar seu aplicativo.

  

_app.py_

Este arquivo define a lógica do seu aplicativo. Para saber mais sobre como modificar este arquivo, consulte [a documentação do Shiny for Python](https://shiny.rstudio.com/py/docs/overview.html). À medida que seu aplicativo se torna mais complexo, é uma boa ideia dividir a lógica da sua aplicação em [módulos](https://shiny.rstudio.com/py/docs/workflow-modules.html).

_Dockerfile_

O Dockerfile para um aplicativo Shiny for Python é muito minimalista, pois a biblioteca não possui muitas dependências de sistema, mas você pode precisar modificar esse arquivo se o seu aplicativo tiver dependências de sistema adicionais. A única funcionalidade essencial desse arquivo é expor e executar o aplicativo na porta especificada no arquivo README do espaço (que é 7860 por padrão).

__requirements.txt__

O Space instalará automaticamente as dependências listadas no arquivo requirements.txt. Observe que você deve incluir shiny neste arquivo.

## Shiny para R

[Shiny for R](https://shiny.rstudio.com/) é um framework de aplicações popular e consolidado na comunidade R e é uma ótima escolha se você deseja hospedar um aplicativo R na infraestrutura do Hugging Face ou aproveitar algumas das excelentes [extensões do Shiny R](https://github.com/nanxstats/awesome-shiny-extensions). Para integrar as ferramentas do Hugging Face a um aplicativo R, você pode usar o [httr2](https://httr2.r-lib.org/) para chamar as APIs do Hugging Face ou o [reticulate](https://rstudio.github.io/reticulate/) para chamar um dos SDKs em Python do Hugging Face.

Para implantar um Espaço R Shiny, clique neste botão e preencha os metadados do Espaço. Isso preencherá o Espaço com todos os arquivos necessários para começar.

  

_app.R_ Este arquivo contém toda a lógica da sua aplicação. Se preferir, você pode dividir este arquivo em `ui.R` e `server.R`.

_Dockerfile_

O Dockerfile é construído a partir da imagem [rocker shiny](https://hub.docker.com/r/rocker/shiny). Você precisará modificar este arquivo para usar pacotes adicionais. Se você estiver usando muitos pacotes do tidyverse, recomendamos trocar a imagem base para [rocker/shinyverse](https://hub.docker.com/r/rocker/shiny-verse). Você pode instalar pacotes R adicionais adicionando-os na seção `RUN install2.r` do dockerfile, e pacotes do github podem ser instalados adicionando o repositório em `RUN installGithub.r`.

Existem dois requisitos principais para este Dockerfile:

-   Primeiro, o arquivo deve expor a porta que você listou no README. O padrão é 7860 e recomendamos não alterar essa porta, a menos que você tenha um motivo para isso.

-   Em segundo lugar, por enquanto, você deve usar a versão de desenvolvimento do [httpuv](https://github.com/rstudio/httpuv), que resolve um problema com timeouts de aplicativo no Hugging Face.

