# Projetos

URL: /administrar/projetos

Crie projetos, siga o guia de configuração, gerencie membros e tags e ajuste anexos e erros.

Um projeto representa uma aplicação testada e reúne ambientes, membros, tags e reports.

## Criar um projeto [#criar-um-projeto]

**Quem faz:** administrador.

Em **Administração do Mira → Projetos**, clique em **Novo projeto**. A página pede só o que o projeto precisa para receber o primeiro report:

| Campo | O que informar |
| --- | --- |
| **Nome do projeto** | O nome da app testada. Abaixo do campo, o Mira mostra a **Chave** que vai gerar, como `loja-demo-a3f92c1b`. A chave não muda se você renomear o projeto |
| **URL do app** | Onde a app roda, como `https://app.empresa.com`. A origem dessa URL vira a do primeiro ambiente |
| **Nome do Ambiente** | Começa como `Produção`. Outros ambientes, como `staging`, entram depois nas configurações |

**Mais opções** abre a escolha dos **Mantenedores**. O campo começa com a sua conta, e o projeto sempre precisa de pelo menos um. Você convida os demais depois, em **Membros**.

Clique em **Criar projeto**. O Mira abre o [Guia de configuração](#guia-de-configuração) no passo de captura.

<Figure src="/images/project-create.png" alt="Página Novo projeto com os campos Nome do projeto, URL do app e Nome do Ambiente" caption="A criação guiada pede nome, URL do app e o primeiro ambiente." />

A tela **Projetos** lista os projetos por nome, com busca por nome ou chave. O menu de cada linha dá acesso direto a ambientes, membros e configurações.

## Guia de configuração [#guia-de-configuração]

**Quem faz:** administrador ou Mantenedor.

O guia leva o projeto de recém-criado ao primeiro report recebido. Ele tem quatro passos, e o progresso mostra "N de M concluídos":

| Passo | O que fazer |
| --- | --- |
| **Projeto e Ambiente** | Já vem feito: o projeto e o primeiro ambiente foram criados |
| **Captura e primeiro report** | Instalar o widget ou a extensão e enviar um report de teste |
| **DSN de erros** | Opcional. Gerar a chave de ingestão para a app enviar os erros |
| **Extras** | Atalhos para **Mantenedores e membros**, **Integrações**, **Tags** e **Templates**. Não contam no progresso |

No passo **Captura e primeiro report**, escolha entre **Widget** e **Extensão**. O widget fica dentro da app. Com ele, siga as etapas:

1. **Instale o bridge.** A aba **npm** mostra o comando de instalação e o código de `mira.init`. A aba **Script** serve a app sem bundler: cole a tag `<script>` no `<head>`, antes dos scripts da app. As duas trazem a URL desta instância já preenchida.
2. **Inicie o widget antes do app.** O trecho de código muda conforme a aba.
3. **Libere a instância na CSP**, só se a app define uma Content-Security-Policy. Pela tag de script, a CSP também bloqueia o `mira.init` inline: mova a chamada para um arquivo `.js` da app ou autorize-a com nonce.

Com a **Extensão**, o passo oferece **Baixar a extensão**. Ela captura em qualquer site das origens do ambiente, sem mudar o código da app.

Depois, clique em **Enviar report de teste**. O Mira abre a app em outra aba e fica em "Aguardando o primeiro report…". Quando o report chega, o passo mostra **Conectado**. Sem report em 2 minutos, o guia avisa e oferece **Continuar aguardando**, **Terminar depois** e a **Solução de problemas**: confira se o site está nas origens do ambiente e se a CSP libera a instância.

<Figure src="/images/project-setup-guide.png" alt="Guia de configuração no passo Captura e primeiro report, com as abas npm e Script" caption="O passo de captura do guia, com as abas npm e Script." />

Ao terminar, **Ir para o Resumo** abre o painel do projeto. Enquanto a captura não está ligada, o Resumo mostra o aviso **Projeto em configuração**, e os números aparecem quando o primeiro report chega. O checklist **Configuração: N de M** com **Continuar configuração** fica no topo do Resumo dos administradores e Mantenedores. **Dispensar** esconde o checklist, e o **Guia de configuração**, na seção **Geral**, o reabre.

## Configurações do projeto [#configurações-do-projeto]

**Quem faz:** administrador ou Mantenedor.

Abra o menu do projeto, no topo da barra lateral, e clique em **Configurações do projeto**. A seção aberta fica no endereço da página, como `?section=environments`. As seções formam quatro grupos:

| Grupo | Seção | Para que serve |
| --- | --- | --- |
| **Projeto** | **Geral** | Nome, ID e chave do projeto, e a entrada do guia de configuração. ID e chave são só leitura, com botão de copiar |
| **Projeto** | **Membros** | Quem tem acesso ao projeto |
| **Projeto** | **Ambientes** | [Origens de cada ambiente](/administrar/ambientes) |
| **Reports** | **Tags** | Etiquetas dos reports |
| **Reports** | **Templates** | [Texto-base de título e descrição](/administrar/templates) |
| **Captura** | **Anexos** | Armazenamento dos anexos e replay |
| **Captura** | **Erros** | Código-fonte, nível de dados por ambiente e chaves de ingestão |
| **Conexões** | **Integrações** | [GitHub Issues, Jira e webhooks](/integracoes) |
| **Conexões** | **Agentes de IA** | Teto dos agentes, repositórios de código e assistente |

<Figure src="/images/integrate-environments.png" alt="Seção Ambientes das configurações do projeto" caption="As seções ficam agrupadas em Projeto, Reports, Captura e Conexões." />

### Membros [#membros]

**Quem faz:** administrador ou Mantenedor.

A lista mostra o papel de cada pessoa (**Membro** ou **Mantenedor**). Só membros veem e reportam no projeto. Administradores enxergam todos. A lixeira remove o membro, e os reports dele continuam no projeto. Um projeto precisa de pelo menos um Mantenedor ativo: o Mira recusa remover o último.

#### Convidar para o projeto [#convidar-para-o-projeto]

Clique em **Convidar**, informe o email e o **Papel no projeto** (**Membro** ou **Mantenedor**) e clique em **Enviar convite**.

<Figure src="/images/project-invite.png" alt="Diálogo Convidar para o projeto com o email preenchido e o botão Enviar convite" caption="O diálogo Convidar para o projeto." />

O resultado depende do email:

- **Já tem conta ativa:** a pessoa entra no projeto na hora e recebe uma notificação no sino e por email. O Mira mostra "agora é membro do projeto".
- **Não tem conta, ou a conta nunca confirmou o email:** o Mira cria um convite com link de uso único, preso ao email e válido por 7 dias.
- **Conta desativada:** o Mira recusa com "Conta desativada, fale com um administrador".
- **Já é membro:** o Mira avisa que a pessoa já é membro.

Com o envio de email configurado na instância, o link segue só para a pessoa e você não o vê, para que ninguém crie a conta no lugar do dono do email. Sem email, o diálogo mostra o **Link do convite**: clique em **Copiar link** e envie por um canal seguro.

<Figure src="/images/project-invite-link.png" alt="Diálogo mostrando o Link do convite e o botão Copiar link" caption="Numa instância sem email, quem convida copia o link." />

Os convites que ainda não foram aceitos aparecem em **Convites pendentes**, com o papel e a data de validade. Um convite vencido ganha o selo **Expirado**. O menu de cada convite tem:

- **Reenviar email**: manda o convite de novo por email, com um link novo. O link anterior deixa de valer.
- **Copiar link novo**: gera um link novo e o copia para a área de transferência. O anterior deixa de valer.
- **Revogar**: o link deixa de valer. Você pode convidar a pessoa de novo depois.

Convidar o mesmo email de novo no mesmo projeto renova o convite pendente, sem criar outro.

<Figure src="/images/project-members.png" alt="Membros do projeto com o botão Convidar e a lista Convites pendentes em destaque" caption="Os convites pendentes aparecem abaixo dos membros." />

#### O que a pessoa convidada vê [#o-que-a-pessoa-convidada-vê]

O link abre uma página que diz quem convidou e para qual projeto. Quem não tem conta escolhe uma de duas entradas:

- **Criar senha**: informe nome, senha (mínimo de dez caracteres) e a confirmação, e clique em **Criar conta e entrar**.
- **Continuar com Google**: disponível quando a instância habilita o Google. O email da conta Google precisa ser o do convite. Se for outro, a página mostra os dois emails.

Em seguida, o Mira abre o projeto. Quem abre o link logado em outra conta vê "Este convite é para… Você está como…" e o botão **Sair e continuar**.

<Figure src="/images/invite-accept.png" alt="Página do convite com os campos Nome, Senha e Confirmar senha e os botões Criar conta e entrar e Continuar com Google" caption="A página que a pessoa convidada abre." />

Link vencido, revogado ou já usado mostra o aviso correspondente. Peça um convite novo a quem convidou.

### Anexos [#anexos]

Dois cards, cada um salvo separadamente. O botão **Salvar** só habilita depois de uma alteração, e **Descartar** volta ao valor salvo.

- **Armazenamento**: o limite de tamanho por anexo, em MB (padrão: 50), a retenção e as chaves extras de segredo. Retenção vazia mantém os anexos para sempre. As chaves extras são uma expressão regular por linha, somadas às que o Mira já redige.
- **Replay**: define se a extensão e o widget podem gravar, e as áreas ocultas por ambiente e caminho. Uma regra aplicável sem correspondência mascara todo o texto até a configuração ser revisada.

### Erros [#erros]

A seção reúne a configuração da captura de erros:

- **Código-fonte**: o que guardar dos source maps, para todos os ambientes. **Sem código** recusa os source maps, **Só mapeamento** mostra arquivo, linha e função originais sem guardar o código, e **Completo** também guarda o código. Trocar para **Completo** pede confirmação.
- **Por ambiente**: escolha o ambiente para definir o **Nível de dados**, **Mínimo** ou **Completo**, que vale só para ele. Também pede confirmação ao trocar para **Completo**.
- **Chaves de ingestão**: gere uma chave por app, com um nome (como `web`), e copie o DSN. Revogar uma chave faz as apps que usam o DSN deixarem de enviar erros.

Veja [Erros em produção](/guias/erros-em-producao) para o passo a passo.

## Tags [#tags]

Em **Configurações do projeto → Tags**, administradores e Mantenedores buscam, criam, renomeiam, recolorem e excluem tags. O nome é único por projeto, sem distinguir maiúsculas. A cor sai de uma paleta de nove, e uma tag nova começa em cinza. A coluna de uso leva à lista de reports filtrada pela tag. Excluir uma tag mostra quantos reports vão perder o vínculo. Os reports permanecem.

## Assistente de triagem [#assistente-de-triagem]

Na seção **Agentes de IA**, o card **Assistente** ativa as sugestões de triagem por IA e escolhe quais evidências o modelo lê: console, rede e erros. O padrão é desativado. O card só aparece quando a instância tem a chave da API configurada. **Analisar reports abertos** pede a análise de todos os reports abertos do projeto, com aviso de que cada um usa créditos da API.

## Próximos passos [#próximos-passos]

- [Ambientes e origens](/administrar/ambientes)
- [Integrações](/integracoes)
