# 📋 Passo a Passo - Publicar no Apache

Guia simples e direto para publicar a aplicação Smart Agenda no Apache.

---

## ⚠️ IMPORTANTE: Onde Executar os Comandos

- **Passos 1 e 2:** No seu **COMPUTADOR LOCAL** (onde está o código)
- **Passos 3 em diante:** No **SERVIDOR** (via SSH)

---

## ✅ Passo 1: Criar o Build (NO SEU COMPUTADOR)

**⚠️ Execute isto no seu computador, não no servidor!**

Abra o terminal no seu computador e vá até a pasta do projeto:

```bash
cd /Users/230417/SmartAgendaMobile/web
npm run build
```

**O que acontece:** Cria a pasta `dist/` com os arquivos otimizados para produção.

**Tempo estimado:** 1-2 minutos

**Verifique se a pasta foi criada:**
```bash
ls -la dist/
```

Deve ver arquivos como `index.html` e uma pasta `assets/`.

---

## ✅ Passo 2: Verificar o Build Localmente (Opcional - NO SEU COMPUTADOR)

**⚠️ Ainda no seu computador!**

Antes de enviar para o servidor, teste localmente:

```bash
npm run preview
```

Acesse `http://localhost:4173` no navegador para verificar se está tudo funcionando.

**Depois, pressione `Ctrl+C` para parar o servidor.**

---

## ✅ Passo 3: Conectar ao Servidor

Conecte-se ao seu servidor Apache via SSH:

```bash
ssh usuario@seu-servidor.com
```

**Substitua:**
- `usuario` pelo seu usuário do servidor
- `seu-servidor.com` pelo IP ou domínio do servidor

---

## ✅ Passo 4: Criar Diretório no Servidor

No servidor, crie a pasta onde a aplicação ficará:

```bash
sudo mkdir -p /var/www/html/smart-agenda
```

---

## ✅ Passo 5: Copiar Arquivos para o Servidor

**⚠️ IMPORTANTE: Execute isto no SEU COMPUTADOR, não no servidor!**

**Opção A - Via SCP (Recomendado - Do seu computador):**

No seu computador, abra um terminal e execute:

```bash
cd /Users/230417/SmartAgendaMobile/web
scp -r dist/* santospap@seu-servidor.com:/var/www/html/smart-agenda/
```

**Substitua `seu-servidor.com` pelo IP ou domínio do seu servidor.**

**Opção B - Via FTP/SFTP (FileZilla, WinSCP, etc.):**

1. No seu computador, abra o cliente FTP (FileZilla, WinSCP, etc.)
2. Conecte-se ao servidor
3. Navegue até `/var/www/html/` no servidor
4. Crie a pasta `smart-agenda` se não existir
5. No seu computador, navegue até `/Users/230417/SmartAgendaMobile/web/dist/`
6. Faça upload de **TODOS** os arquivos e pastas da pasta `dist/` para `/var/www/html/smart-agenda/` no servidor

**Opção C - Se já tiver os arquivos no servidor:**

Se por algum motivo já tiver os arquivos em outro lugar no servidor:

```bash
sudo cp -r /caminho/para/arquivos/* /var/www/html/smart-agenda/
```

---

## ✅ Passo 6: Criar Arquivo .htaccess

No servidor, crie o arquivo `.htaccess`:

```bash
sudo nano /var/www/html/smart-agenda/.htaccess
```

**Cole este conteúdo:**

```apache
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  
  # Não reescrever arquivos e diretórios existentes
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  
  # Redirecionar tudo para index.html (SPA routing)
  RewriteRule . /index.html [L]
</IfModule>
```

**Para salvar:** Pressione `Ctrl+O`, depois `Enter`, depois `Ctrl+X`

---

## ✅ Passo 7: Configurar Permissões

No servidor, configure as permissões corretas:

```bash
sudo chown -R www-data:www-data /var/www/html/smart-agenda
sudo chmod -R 755 /var/www/html/smart-agenda
```

**Nota:** Se usar CentOS/RHEL, use `apache:apache` em vez de `www-data:www-data`

---

## ✅ Passo 8: Habilitar Módulo Rewrite (Se necessário)

No servidor, habilite o módulo rewrite do Apache:

**Ubuntu/Debian:**
```bash
sudo a2enmod rewrite
sudo systemctl restart apache2
```

**CentOS/RHEL:**
```bash
# Geralmente já vem habilitado, mas verifique:
sudo systemctl restart httpd
```

---

## ✅ Passo 9: Configurar Virtual Host (Opcional mas Recomendado)

Se quiser usar um domínio específico, configure um Virtual Host:

**Ubuntu/Debian:**
```bash
sudo nano /etc/apache2/sites-available/smart-agenda.conf
```

**CentOS/RHEL:**
```bash
sudo nano /etc/httpd/conf.d/smart-agenda.conf
```

**Cole este conteúdo (ajuste o domínio):**

```apache
<VirtualHost *:80>
    ServerName seu-dominio.com
    ServerAlias www.seu-dominio.com
    
    DocumentRoot /var/www/html/smart-agenda
    
    <Directory /var/www/html/smart-agenda>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    
    ErrorLog ${APACHE_LOG_DIR}/smart-agenda-error.log
    CustomLog ${APACHE_LOG_DIR}/smart-agenda-access.log combined
</VirtualHost>
```

**Para Ubuntu/Debian, ative o site:**
```bash
sudo a2ensite smart-agenda.conf
sudo systemctl reload apache2
```

**Para CentOS/RHEL:**
```bash
sudo systemctl reload httpd
```

---

## ✅ Passo 10: Testar

1. Acesse no navegador:
   - `http://seu-servidor/smart-agenda/` (se não configurou domínio)
   - `http://seu-dominio.com` (se configurou domínio)

2. Teste as rotas:
   - `/login`
   - `/explorar`
   - `/registo`

3. Verifique o console do navegador (F12) para erros

---

## 🔧 Troubleshooting Rápido

### Problema: Página em branco
```bash
# Verifique permissões
sudo chmod -R 755 /var/www/html/smart-agenda
sudo chown -R www-data:www-data /var/www/html/smart-agenda
```

### Problema: Rotas não funcionam (404)
```bash
# Verifique se o módulo rewrite está habilitado
sudo a2enmod rewrite
sudo systemctl restart apache2

# Verifique se o .htaccess existe
ls -la /var/www/html/smart-agenda/.htaccess
```

### Problema: Assets não carregam
```bash
# Verifique se todos os arquivos foram copiados
ls -la /var/www/html/smart-agenda/

# Deve ter pelo menos:
# - index.html
# - assets/ (pasta)
```

### Ver logs de erro:
```bash
# Ubuntu/Debian
sudo tail -f /var/log/apache2/error.log

# CentOS/RHEL
sudo tail -f /var/log/httpd/error_log
```

---

## 📝 Checklist Final

- [ ] Build criado (`npm run build`)
- [ ] Arquivos copiados para `/var/www/html/smart-agenda/`
- [ ] Arquivo `.htaccess` criado
- [ ] Permissões configuradas
- [ ] Módulo rewrite habilitado
- [ ] Apache reiniciado
- [ ] Aplicação acessível no navegador
- [ ] Rotas funcionando corretamente

---

## 🎉 Pronto!

Sua aplicação está publicada! Se tiver problemas, verifique os logs do Apache.
