# Setup em Novo Computador

Guia rapido para configurar o ambiente de desenvolvimento em uma nova maquina.

## Pre-requisitos

- **Git** instalado
- **Bun** 1.3+ ([bun.sh](https://bun.sh))
- **Docker** (para PostgreSQL local)
- **Node.js** 20+ (opcional, para algumas ferramentas)

### Instalar Bun (se ainda nao tiver)

```bash
# Linux/macOS/WSL
curl -fsSL https://bun.sh/install | bash

# Windows (PowerShell)
powershell -c "irm bun.sh/install.ps1 | iex"
```

## Configurar Autenticacao (Repositorio Privado)

Se o repositorio for privado, configure autenticacao SSH antes de clonar.

### Opcao 1: SSH Key (Recomendado)

```bash
# 1. Gerar chave SSH (se nao tiver)
ssh-keygen -t ed25519 -C "seu-email@exemplo.com"
# Pressione Enter para aceitar o local padrao
# Defina uma senha ou deixe em branco

# 2. Copiar a chave publica
# Linux/macOS/WSL:
cat ~/.ssh/id_ed25519.pub

# Windows (PowerShell):
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

# Windows (CMD):
type %USERPROFILE%\.ssh\id_ed25519.pub
```

**Adicionar a chave nos servicos:**
- **GitHub:** Settings > SSH and GPG keys > New SSH key
- **Forgejo:** Settings > SSH / GPG Keys > Add Key

### Opcao 2: Personal Access Token (PAT)

1. **GitHub:** Settings > Developer settings > Personal access tokens > Tokens (classic)
2. Gerar token com permissao `repo`
3. Usar o token como senha quando o git pedir

Para salvar o token (nao precisar digitar toda vez):
```bash
git config --global credential.helper store
# Proximo push/pull vai pedir usuario e token, e salvar
```

## Setup Rapido

### 1. Clonar o repositorio

**Repositorio publico (HTTPS):**
```bash
git clone https://github.com/esdrasrenan/sistema-de-chamados.git
cd sistema-de-chamados
```

**Repositorio privado (SSH):**
```bash
git clone git@github.com:esdrasrenan/sistema-de-chamados.git
cd sistema-de-chamados
```

Ou se ja tiver o repositorio:
```bash
cd sistema-de-chamados
git pull origin main
```

### 2. Configurar remotes (para CI/CD)

**Repositorio publico (HTTPS):**
```bash
git remote add forgejo https://git.esdrasrenan.com.br/esdras/sistema-de-chamados.git
```

**Repositorio privado (SSH):**
```bash
# Mudar origin para SSH (se clonou via HTTPS)
git remote set-url origin git@github.com:esdrasrenan/sistema-de-chamados.git

# Adicionar forgejo via SSH (porta 2222)
git remote add forgejo ssh://git@git.esdrasrenan.com.br:2222/esdras/sistema-de-chamados.git
```

**Verificar remotes:**
```bash
git remote -v
# Deve mostrar (exemplo com SSH):
#   origin   git@github.com:esdrasrenan/sistema-de-chamados.git (fetch)
#   origin   git@github.com:esdrasrenan/sistema-de-chamados.git (push)
#   forgejo  ssh://git@git.esdrasrenan.com.br:2222/esdras/sistema-de-chamados.git (fetch)
#   forgejo  ssh://git@git.esdrasrenan.com.br:2222/esdras/sistema-de-chamados.git (push)
```

### 3. Instalar dependencias

```bash
bun install
```

### 4. Configurar banco de dados

```bash
# Subir PostgreSQL via Docker
docker run -d \
  --name postgres-dev \
  -p 5432:5432 \
  -e POSTGRES_PASSWORD=dev \
  -e POSTGRES_DB=sistema_chamados \
  postgres:16

# Criar arquivo .env
cp .env.example .env
```

Edite o `.env` e configure:

```env
DATABASE_URL=postgresql://postgres:dev@localhost:5432/sistema_chamados
BETTER_AUTH_SECRET=sua-chave-secreta-aqui
NEXT_PUBLIC_APP_URL=http://localhost:3000
BETTER_AUTH_URL=http://localhost:3000
```

### 5. Inicializar o banco

```bash
# Gerar cliente Prisma
bun run prisma:generate

# Criar tabelas no banco
bunx prisma db push

# Popular dados iniciais
bun run auth:seed
```

### 6. Rodar o projeto

```bash
bun run dev:bun
```

Acesse: http://localhost:3000

**Credenciais padrao:** `admin@sistema.dev` / `admin123`

## Comandos Uteis

| Comando | Descricao |
|---------|-----------|
| `bun run dev:bun` | Iniciar servidor de desenvolvimento |
| `bun run build:bun` | Build de producao |
| `bun run lint` | Verificar codigo (ESLint) |
| `bun test` | Rodar testes |
| `bun run prisma:generate` | Gerar cliente Prisma |
| `bunx prisma studio` | Interface visual do banco |

## Fluxo de Trabalho com Git

### Push para ambos os remotes (recomendado)

```bash
# Fazer alteracoes
git add .
git commit -m "sua mensagem"

# Push para GitHub (backup) e Forgejo (CI/CD)
git push origin main && git push forgejo main
```

### Configurar alias para push duplo (opcional)

```bash
# Criar alias
git config alias.push-all '!git push origin main && git push forgejo main'

# Usar
git push-all
```

## Troubleshooting

### Erro: "bun: command not found"

```bash
# Adicionar Bun ao PATH
export PATH="$HOME/.bun/bin:$PATH"

# Adicionar permanentemente ao ~/.bashrc ou ~/.zshrc
echo 'export PATH="$HOME/.bun/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```

### Erro: Prisma "P2021" / tabelas nao existem

```bash
bunx prisma db push
bun run auth:seed
```

### Erro: Lockfile desatualizado

```bash
bun install
```

### PostgreSQL nao conecta

```bash
# Verificar se o container esta rodando
docker ps

# Se nao estiver, iniciar
docker start postgres-dev

# Ou recriar
docker rm -f postgres-dev
docker run -d --name postgres-dev -p 5432:5432 -e POSTGRES_PASSWORD=dev -e POSTGRES_DB=sistema_chamados postgres:16
```

## Convex (Backend de Tempo Real)

Para desenvolvimento com Convex local:

```bash
# Terminal 1: Convex dev server
bun run convex:dev:bun

# Terminal 2: Next.js
bun run dev:bun
```

## Mais Informacoes

- **Desenvolvimento detalhado:** `docs/DEV.md`
- **Deploy e operacoes:** `docs/DEPLOY-RUNBOOK.md`
- **CI/CD Forgejo:** `docs/FORGEJO-CI-CD.md`
