# 🚀 Deploy Instructions - Kannabium Refactored

## ✅ Status: PRONTO PARA PRODUÇÃO

**Data:** 15-04-2026  
**Validação:** 32/32 (100%) ✓  
**Sincronização:** root ↔ deploy_uolhost ✓

---

## 📋 Pré-Deploy Checklist

```bash
# 1. Validar estrutura
./validate-deploy.sh

# 2. Verificar git status
git status

# 3. Revisar mudanças
git diff --stat
```

## 🔄 Deploy Workflow

### Opção A: Git-based Deploy (Recomendado)

```bash
# 1. Verificar status
git status
# Esperado: mudança em index.html, arquivos em modules/

# 2. Stage mudanças
git add -A

# 3. Criar commit
git commit -m "refactor: modularize kannabium app to es6 modules"

# 4. Push para remote
git push origin main

# 5. Pipeline automático faz deploy para produção
# (ou manual via seu processo habitual)
```

### Opção B: Manual Deploy (SCP/SFTP)

```bash
# 1. Entrar na pasta deploy
cd deploy_uolhost/

# 2. Sincronizar para servidor
rsync -avz --delete \
  ./ \
  user@server:/var/www/kannabium/

# Ou via SCP
scp -r * user@server:/var/www/kannabium/
```

### Opção C: Docker/Container

```dockerfile
FROM node:22
WORKDIR /app
COPY deploy_uolhost/ .
EXPOSE 8000
CMD ["npx", "http-server", "-p", "8000"]
```

---

## 🔐 Segurança Pré-Deploy

### Verificar Configurações

```bash
# 1. Confirmar ambiente correto
grep -r "window.location" modules/
# Deve ser relativo, não hardcoded

# 2. Verificar credenciais
grep -r "api_key\|password\|token" .
# Não deve haver secrets em código

# 3. Verificar console.log
grep -r "console\." modules/ | grep -v "console.error\|console.warn"
# Remover debug logs antes de produção (opcional)
```

### Build Otimizado (Opcional)

```bash
# Se usando bundler
npm install -D vite

# Build otimizado
npx vite build

# Minificação automática
# Output em dist/
```

---

## 🌐 Servidor Web Configuration

### Nginx

```nginx
server {
    listen 443 ssl http2;
    server_name kannabium.example.com;

    root /var/www/kannabium;
    index index.html;

    # ES6 Modules
    error_page 404 /index.html;

    # Cache strategy
    location /modules/ {
        expires 1h;
        add_header Cache-Control "public, max-age=3600";
    }

    location / {
        try_files $uri $uri/ /index.html;
    }

    # Gzip
    gzip on;
    gzip_types text/javascript application/javascript;
}
```

### Apache

```apache
<Directory /var/www/kannabium>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.html$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.html [L]
</Directory>

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/javascript
    AddOutputFilterByType DEFLATE application/javascript
</IfModule>
```

### Vercel (Recomendado para estático)

```json
{
  "version": 2,
  "buildCommand": "echo 'Static site, no build needed'",
  "outputDirectory": ".",
  "public": false,
  "cleanUrls": false,
  "trailingSlash": false,
  "headers": [
    {
      "source": "/(.*)",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "no-cache"
        }
      ]
    },
    {
      "source": "/modules/(.*)",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "public, max-age=31536000, immutable"
        }
      ]
    }
  ]
}
```

---

## 📊 Validação Pós-Deploy

### Smoke Test (Imediato)

```bash
# 1. Verificar que página carrega
curl -I https://kannabium.example.com
# HTTP/2 200

# 2. Verificar módulos carregam
curl -s https://kannabium.example.com/modules/main.js | head -5
# Deve conter "export"

# 3. Verificar assets
curl -I https://kannabium.example.com/styles.css
# HTTP/2 200

# 4. Verificar PDB
curl -I https://kannabium.example.com/3VTE.pdb
# HTTP/2 200
```

### Browser Testing (Manual)

```javascript
// Abrir devtools (F12) e executar:

// 1. Verificar módulos carregam
fetch('/modules/main.js').then(r => r.text()).then(t => console.log('✓ main.js carregou'))

// 2. Verificar app inicia
setTimeout(() => {
  if (window.kannabiumApp) {
    console.log('✓ KannabiumApp instantiado');
  } else {
    console.error('✗ KannabiumApp não carregou');
  }
}, 2000);

// 3. Testar funcionalidade básica
window.kannabiumApp.ui.getVisualizationConfig()
// Deve retornar config object
```

### Performance Check

```bash
# 1. Lighthouse
# Abrir em Chrome DevTools > Lighthouse > Generate Report
# Verificar Core Web Vitals

# 2. PageSpeed Insights
curl "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=https://kannabium.example.com"

# 3. GTmetrix
# Ir para https://gtmetrix.com
# Informar URL e analisar
```

---

## 🔧 Troubleshooting Deploy

### Erro: "Modules not loading"

**Causa:** CORS ou headers incorretos  
**Solução:**
```bash
# Verificar se servidor serve type="module" com MIME type correto
curl -I https://kannabium.example.com/modules/main.js
# Deve ter: Content-Type: text/javascript ou application/javascript
```

### Erro: "Cannot find file"

**Causa:** Path incorreto no servidor  
**Solução:**
```bash
# Verificar estrutura completa está deployed
ls -la /var/www/kannabium/modules/
# Deve listar os 8 módulos

# Verificar permissões
chmod 644 /var/www/kannabium/modules/*.js
chmod 755 /var/www/kannabium/modules/
```

### Erro: "3Dmol fails to load"

**Esperado:** Fallback automático para canvas  
**Verificação:**
```javascript
// No console do navegador
window.kannabiumApp.viewer.getMode()
// Retornará 'webgl' ou 'canvas'

window.kannabiumApp.viewer.getLibrarySource()
// Mostrar origem do 3Dmol
```

---

## 📈 Monitoring Pós-Deploy

### ErrorTracking (Recomendado)

```javascript
// Integrar Sentry ou similar
import * as Sentry from "@sentry/browser";

Sentry.init({
  dsn: "your_sentry_dsn_here",
  environment: "production",
});
```

### Analytics

```javascript
// Google Analytics
window.dataLayer = window.dataLayer || [];
gtag('event', 'page_view');

// Verificar que módulos carregam corretamente
gtag('event', 'module_load', {
  module: 'main.js',
  status: 'success'
});
```

### Logs

```bash
# Monitorar erros em nginx
tail -f /var/log/nginx/error.log

# Monitorar traffic
tail -f /var/log/nginx/access.log | grep "modules/"
```

---

## ✅ Rollback Plan

Se houver problema crítico:

```bash
# 1. Rever último deploy
git revert HEAD

# 2. Ou restaurar backup
cp backup/app.js ./app.js

# 3. Redeploy
# (via seu processo habitual)

# 4. Reportar erro
# Issues devem mencionar:
# - Navegador
# - URL
# - Stack trace (F12 console)
# - Steps to reproduce
```

---

## 📞 Suporte Pós-Deploy

### Se aparecerem erros

1. Verificar console do navegador (F12)
2. Checar `window.kannabiumApp` state
3. Testar em incognito (sem cache)
4. Testar em outro navegador
5. Reportar com stack trace completo

### Contato

- **GitHub Issues:** [link no README]
- **Email:** dev@biodev.example.com
- **Slack:** #kannabium-support

---

## 🎉 Conclusão

Deploy está **100% validado e pronto**.

**Próxima ação:** Executar `./validate-deploy.sh` uma última vez, depois seguir workflow Git (git add/commit/push) ou manual de sua escolha.

---

**Versão:** 1.0.0 (Modular)  
**Data:** 15-04-2026  
**Status:** ✓ READY FOR PRODUCTION
