> ## Documentation Index
> Fetch the complete documentation index at: https://docs.domsoftware.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Guia de Deploy (Infraestrutura)

> Como a equipe de desenvolvimento deve colocar o OmniDom em produção (MVP: Railway + Vercel).

O ambiente de produção (MVP) do OmniDom foi projetado para ser serverless e auto-gerenciável, utilizando a **Vercel** para o Frontend e a **Railway** para o ecossistema do Backend.

***

## 1. Deploy do Banco de Dados e Redis (Railway)

O backend do OmniDom exige um banco relacional (PostgreSQL) e um banco em memória (Redis) para operar as filas e cache. Essa infraestrutura deve ser subida *antes* da aplicação.

<Steps>
  <Step title="Crie o Projeto na Railway">
    Acesse seu painel da [Railway.app](https://railway.app), crie um novo "Project" vazio.
  </Step>

  <Step title="Adicione o PostgreSQL">
    Dentro do projeto, clique em **+ New** > **Database** > **Add PostgreSQL**. A Railway criará e instanciará o banco. Copie a `DATABASE_URL` gerada.
  </Step>

  <Step title="Adicione o Redis">
    No mesmo projeto, clique em **+ New** > **Database** > **Add Redis**. Copie a `REDIS_URL` gerada.
  </Step>
</Steps>

***

## 2. Deploy do Backend (NestJS na Railway)

Com a infraestrutura de dados pronta, suba o motor principal:

<Steps>
  <Step title="Conecte o Repositório">
    No projeto da Railway, clique em **+ New** > **GitHub Repo** e selecione o repositório `hub-marketplace-backend`.
  </Step>

  <Step title="Configuração de Build">
    O Railway reconhecerá automaticamente que é um projeto Node (NestJS) e usará o `package.json` para instalar (`npm install`) e buildar (`npm run build`).
  </Step>

  <Step title="Variáveis de Ambiente">
    Vá na aba **Variables** do serviço do backend recém criado. Cole todas as variáveis `.env` (incluindo as URLs do Postgres e Redis da etapa anterior).
    <Note>Consulte o **Guia de Variáveis de Ambiente** na próxima página para saber o que preencher.</Note>
  </Step>

  <Step title="Gerar Domínio Público">
    Vá na aba **Settings** > **Public Networking** e clique em **Generate Domain**. Esse será o endpoint da sua API (ex: `omnidom-api.up.railway.app`), que o frontend usará.
  </Step>
</Steps>

<Tip>
  O TypeORM está configurado para `synchronize: true` ou via Migrations no boot (verifique o `main.ts` ou `typeorm.config.ts`). É recomendado desativar o sync automático em produção e rodar `npm run migration:run` usando o *Deploy Command* da Railway.
</Tip>

***

## 3. Deploy do Frontend (Next.js na Vercel)

A Vercel é o ambiente ideal para a arquitetura com Server Actions e App Router do Next.js 16.

<Steps>
  <Step title="Importar Repositório na Vercel">
    Acesse a [Vercel](https://vercel.com/new) e importe o repositório `hub-marketplace` (Frontend).
  </Step>

  <Step title="Variáveis de Ambiente Front">
    Adicione pelo menos a obrigatória:

    * `NEXT_PUBLIC_API_URL`: O domínio público que você gerou na Railway na etapa anterior.
  </Step>

  <Step title="Deploy">
    Clique em **Deploy**. A Vercel cuidará de todo o processo de build do Next.js e da distribuição CDN.
  </Step>
</Steps>

***

## 4. Resumo de Ordem de Subida

Em caso de recriação de infraestrutura do zero, siga estritamente a ordem:

1. Subir PostgreSQL e Redis (Railway).
2. Subir a API NestJS e linkar os bancos (Railway).
3. Configurar as chaves secretas dos Marketplaces (veja o guia de Chaves de Autenticação).
4. Subir o Front-End Next.js apontando para a API (Vercel).
