> For the complete documentation index, see [llms.txt](https://struct.gitbook.io/struct/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://struct.gitbook.io/struct/projetos-develop/execucao/projetos/deploy/terceirizando/netlify.md).

# Netlify

## O que é o [Netlify](https://www.netlify.com/)

O Netlify é um serviço de hospedagem de sites estáticos, que também oferece serviços de *staging* e *deploy* automatizados. Isso significa que não é possível hospedar backend no Netlify, apenas frontend (com possibilidade de *AWS Lambda*).

Para fazer *deploy* no Netlify, a possiblidade atualmente gratuita é fazer *deploy* manual, que consiste em gerar e colocar manualmente os arquivos que serão servidos no site. Sendo assim, o processo de *bundling* deve ser feito na mão.

## Como fazer *deploy* manual

### Preparando o projeto

Na própria main, mude o `/public/favicon.ico` para o real ícone do projeto. Mude o `index.html`, trocando os conteúdos das tags `<meta>`, `<title>` e a `lang` da tag `<html>`. Pense na possibilidade de adicionar um `/public/robots.txt`.

Para seguir os próximos passos, primeiro crie uma branch chamada `netlify` no seu projeto, caso ainda não exista.

Mude todas as referências a localhost por suas respectivas urls de produção. Por exemplo, se você tem uma instância axios com a url `http://localhost:3333/api/v1`, mude para `https://seu-projeto.railway.app/api/v1` ou equivalente (a url de *staging*). Se a url das imagens é `http://localhost:3333/`, mude para `https://seu-projeto.railway.app` ou equivalente.

#### Para roteamento client side

Geralmente fazemos *deploy* de React como [*single page app*](https://en.wikipedia.org/wiki/Single-page_application), com um roteador *client side*, como react-router-dom. Sendo assim, rotas não são [*endpoints*](https://www.cloudflare.com/pt-br/learning/security/api/what-is-api-endpoint/), e sempre devem ser retornados os mesmos arquivos pra requisições, independente da rota.

Para tal, adicione o arquivo `_redirects` no do projeto com o seguinte conteúdo:

```
/*    /index.html   200

```

### Fazendo *deploy* manual

1. Vá para a branch `netlify`
2. Rode o comando `yarn build` para gerar uma pasta `build` com os arquivos estáticos.
3. Faça login na conta de projetos da struct
4. Selecione a opção de *deploy* manual (*deploy manually*) ![Netlify\_deploy](/files/hs2VVFziqrEqWytyGnfS)
5. Arraste e solte os arquivos da pasta `build` na área de upload
