# 🚀 Angola Marketplace (Next.js) — Deploy no cPanel

## Pré-requisitos no cPanel
- Node.js 18+ activado no cPanel (Node.js App)
- MySQL/MariaDB disponível
- Conta PlanetScale (ou MySQL local do cPanel)

---

## Passo 1 — Base de dados

### Opção A: PlanetScale (recomendado — gratuito)
1. Crie conta em https://planetscale.com
2. Crie novo database "angola-marketplace"
3. Vá em Connect → Node.js → copie a DATABASE_URL

### Opção B: MySQL do cPanel
1. cPanel → MySQL Databases
2. Crie o banco: `angola_marketplace`
3. Crie utilizador e atribua todas as permissões
4. DATABASE_URL: `mysql://USER:PASS@127.0.0.1:3306/angola_marketplace`

---

## Passo 2 — Upload dos ficheiros

1. Faça upload de todos os ficheiros para uma pasta (ex: `~/angola-marketplace/`)
2. **NÃO** faça upload da pasta `node_modules/`
3. **NÃO** faça upload da pasta `.next/`

---

## Passo 3 — Configurar ambiente

```bash
# Na raiz do projecto
cp .env.example .env.local
nano .env.local   # editar com os valores reais
```

Valores necessários:
```
DATABASE_URL="mysql://..."
NEXTAUTH_SECRET="string-aleatoria-segura-min-32-chars"
NEXTAUTH_URL="https://seudominio.com"
```

Para gerar o NEXTAUTH_SECRET:
```bash
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
```

---

## Passo 4 — Instalar dependências e build

```bash
npm install
npx prisma generate
npx prisma db push
node prisma/seed.js    # dados iniciais (admin + categorias)
npm run build
```

---

## Passo 5 — Configurar no cPanel Node.js App

1. cPanel → **Setup Node.js App**
2. Clique em **Create Application**
3. Preencha:
   - **Node.js version**: 18.x ou superior
   - **Application mode**: Production
   - **Application root**: `/home/USER/angola-marketplace`
   - **Application URL**: seudominio.com
   - **Application startup file**: `server.js`
4. Clique **Create**

---

## Passo 6 — Criar server.js para cPanel

Crie o ficheiro `server.js` na raiz:
```javascript
const { createServer } = require('http')
const { parse }        = require('url')
const next             = require('next')

const dev = false
const app = next({ dev })
const handle = app.getRequestHandler()

app.prepare().then(() => {
  createServer((req, res) => {
    const parsedUrl = parse(req.url, true)
    handle(req, res, parsedUrl)
  }).listen(process.env.PORT || 3000, () => {
    console.log('> Angola Marketplace running on port', process.env.PORT || 3000)
  })
})
```

---

## Passo 7 — Variáveis de ambiente no cPanel

No cPanel Node.js App → secção **Environment Variables**, adicione:
- `DATABASE_URL` = sua connection string
- `NEXTAUTH_SECRET` = seu secret
- `NEXTAUTH_URL` = https://seudominio.com
- `NODE_ENV` = production

---

## Passo 8 — Iniciar

No cPanel Node.js App, clique em **Start** (ou **Restart** se já estava a correr).

---

## Credenciais iniciais

Após o seed:
- **Admin**: admin@angolomarketplace.ao / admin123
- **Vendedor**: vendedor@angolomarketplace.ao / vendor123

⚠️ **Mude as passwords após o primeiro login!**

---

## Estrutura do projecto

```
angola-marketplace/
├── app/
│   ├── admin/          ← Painel de administração
│   │   ├── page.js     ← Dashboard
│   │   ├── products/   ← CRUD de produtos
│   │   ├── categories/ ← CRUD de categorias
│   │   └── orders/     ← Gestão de pedidos
│   ├── api/            ← API Routes (REST)
│   ├── login/          ← Página de login
│   └── page.js         ← Loja (homepage)
├── components/
│   └── admin/          ← Sidebar, Header
├── lib/
│   ├── prisma.js       ← Cliente DB
│   ├── auth.js         ← NextAuth config
│   └── utils.js        ← Utilitários
├── prisma/
│   ├── schema.prisma   ← Schema da base de dados
│   └── seed.js         ← Dados iniciais
├── .env.example        ← Template de variáveis
├── next.config.js
├── tailwind.config.js
└── package.json
```

---

## Comandos úteis

```bash
# Desenvolvimento local
npm run dev

# Ver/editar base de dados
npm run db:studio

# Recriar base de dados
npx prisma db push --force-reset
node prisma/seed.js

# Rebuild após alterações
npm run build
```
