# Deploy no cPanel

Este projecto esta preparado para cPanel com PHP 8.1+ e MySQL/MariaDB.

## 1. Criar a base de dados

No cPanel:

1. Abra **MySQL Databases**.
2. Crie uma base, por exemplo `cpaneluser_mozcursos`.
3. Crie um utilizador, por exemplo `cpaneluser_mozuser`.
4. Defina uma senha forte.
5. Adicione o utilizador a base com **All Privileges**.

Depois, no **phpMyAdmin**, seleccione a base e importe:

```txt
database/schema.sql
```

## 2. Configurar o .env

No servidor, copie:

```txt
.env.production.example
```

para:

```txt
.env
```

Depois ajuste:

```txt
APP_URL=https://teudominio.com
DB_DATABASE=cpaneluser_mozcursos
DB_USERNAME=cpaneluser_mozuser
DB_PASSWORD=a_senha_real
MAIL_...
```

O ponto principal e:

```txt
DB_CONNECTION=mysql
```

Com isto, o sistema deixa de gravar em JSON e passa a gravar em MySQL.

## 3. Migrar dados actuais JSON para MySQL

Se tiver SSH no cPanel, envie o projecto e execute:

```bash
php scripts/import_json_to_mysql.php --fresh
```

Para testar a ligacao:

```bash
php scripts/check_database.php
```

Se nao tiver SSH, faca localmente:

1. Configure `.env` com os dados MySQL do servidor remoto, se o host permitir acesso remoto.
2. Execute `php scripts/import_json_to_mysql.php --fresh`.
3. Se o host nao permitir acesso remoto, use SSH ou peca ao suporte para executar o script.

## 4. Enviar ficheiros

Estrutura recomendada:

```txt
/home/usuario/mozcursos
  app/
  config/
  database/
  public/
  routes/
  scripts/
  storage/
  vendor/
  .env
  composer.json
```

O **Document Root** do dominio deve apontar para:

```txt
/home/usuario/mozcursos/public
```

Assim o visitante abre:

```txt
https://teudominio.com
```

e nao:

```txt
https://teudominio.com/public
```

## 5. Permissoes

Garanta escrita em:

```txt
storage/
storage/uploads/
storage/sessions/
```

Normalmente:

```txt
pastas: 755
ficheiros: 644
```

Se uploads/sessoes falharem, use `775` em `storage`.

## 6. Extensoes PHP

Activar no cPanel:

```txt
pdo_mysql
fileinfo
mbstring
openssl
json
curl
dom
gd
zip
```

## 7. Se o cPanel so permitir public_html

Melhor opcao: no cPanel, altere o **Document Root** do dominio para a pasta `public`.

Se o plano nao permitir, coloque o projecto fora de `public_html` e copie apenas o conteudo de `public/` para `public_html`, ajustando o `index.php` para apontar para a pasta real do projecto. Esta alternativa e menos limpa; use apenas se o suporte do hosting nao permitir mudar o Document Root.

## 8. Depois de publicar

Entrar como admin e ajustar:

```txt
Admin > Configuracoes > Pagamentos
```

Defina numeros M-Pesa/e-Mola/mKesh, dados bancarios e percentagem de comissao.
