# Prefeitura Municipal de Angra dos Reis — Portal (Laravel)

Guia para rodar este projeto em **ambiente de desenvolvimento local** usando **Laragon** (Windows).

## Stack

- **PHP**: ^8.2
- **Laravel**: ^12
- **Banco**: MySQL/MariaDB
- **Front-end**: Vite (+ Bootstrap/Sass)

## Pré‑requisitos

- **Laragon** instalado (recomendado: *Laragon Full*).
  - Web server: Apache ou Nginx (qualquer um funciona).
  - Banco: MySQL ou MariaDB.
- **PHP 8.2** no Laragon (Menu `Laragon > PHP > Version`).
- **Composer** disponível (o Laragon normalmente já inclui).
- **Node.js**: o projeto declara `"node": "^23.5.0"` no `package.json`.
  - Recomendação: instalar via **nvm-windows** e usar Node 23.x para evitar divergências.

## 1) Clonar na pasta correta do Laragon

Coloque o projeto em:

- `C:\laragon\www\angra.rj.gov.br`

No Laragon, inicie os serviços:

- `Start All`

## 2) Criar o domínio local (*.test*)

Este projeto usa `APP_URL` no formato `.test` (ex.: `angra.rj.gov.br.test`).

Opções:

- **Recomendado (auto virtual host do Laragon)**:
  - Menu `Laragon > Preferences > General >` habilite `Auto Virtual Hosts`
  - Garanta que `C:\laragon\www` é a pasta raiz
  - Reinicie o Laragon
  - Acesse o projeto pelo domínio sugerido pelo Laragon em `Menu > www`
- **Compatível com o `.env` atual**:
  - Acesse `http://angra.rj.gov.br.test`

Se o domínio `.test` não resolver:

- Execute `Laragon > Tools > Quick add > Hosts file` (ou ajuste manualmente o `hosts`)
- Garanta que o serviço do Laragon está rodando e que o Apache/Nginx está escutando

## 3) Variáveis de ambiente (`.env`)

Este repositório depende de um arquivo `.env` **local**.

- Se você já recebeu um `.env` da equipe, apenas coloque-o na raiz do projeto.
- Se não recebeu, crie um `.env` manualmente (ou peça o arquivo padrão do time) e depois gere a chave da aplicação:

```bash
php artisan key:generate
```

### Mínimo recomendado no `.env` para rodar local

- `APP_ENV=local`
- `APP_DEBUG=true`
- `APP_URL=http://angra.rj.gov.br.test` (ou o domínio que você configurou)
- `DB_CONNECTION=mysql`
- `DB_HOST=127.0.0.1`
- `DB_PORT=3306`
- `DB_DATABASE=site`
- `DB_USERNAME=root`
- `DB_PASSWORD=`

O projeto também possui **múltiplas conexões** extras (ver `config/database.php`), por exemplo:

- `mysql_arte_sacra`, `mysql_urls`, `mysql_defesacivil`, `mysql_siati_app`, `mysql_siati_auth`, `mysql_visite_angra`, `mysql_turismo_nautico`, `mysql_bddpmar`, `mysql_ambulantes`, `mysql_divida_ativa`, etc.

Em desenvolvimento, você pode seguir uma destas estratégias:

- **Estratégia A (mais simples)**: criar **todas** as bases MySQL mencionadas no `.env` (mesmo vazias), apontando para `127.0.0.1`.
- **Estratégia B (uma base só)**: apontar as conexões extras para a **mesma** base local (ex.: `site`) no `.env`.
- **Estratégia C (desativar módulos)**: quando possível, manter apenas a base principal e ajustar a aplicação para não acessar módulos que dependem das bases extras.

## 4) Instalar dependências PHP

Na raiz do projeto:

```bash
composer install
```

Se houver erro de extensões do PHP, confira no Laragon se o PHP 8.2 está ativo e habilite extensões comuns (ex.: `pdo_mysql`, `mbstring`, `openssl`, `fileinfo`, `zip`).

## 5) Banco de dados (criar + migrations)

Crie a base principal (ex.: `site`) no MySQL/MariaDB do Laragon (HeidiSQL ou phpMyAdmin).

Depois rode:

```bash
php artisan migrate
```

### Seeders (opcionais)

O `DatabaseSeeder` não executa seeders por padrão (ver `database/seeders/DatabaseSeeder.php`).
Quando precisar popular dados, rode seeders específicos, por exemplo:

```bash
php artisan db:seed --class=PermissaoSeeder
php artisan db:seed --class=StructureSeeder
php artisan db:seed --class=AccountSeeder
```

Há seeders e rotinas de migração legada; o próprio arquivo `DatabaseSeeder.php` indica comandos recomendados, por exemplo:

```bash
php artisan db:seed --class=ProjetosProgramasMigrationSeeder
php artisan db:seed --class=ContratosImportSeeder
```

## 6) Storage e cache

Rode os comandos comuns de ambiente local:

```bash
php artisan storage:link
php artisan optimize:clear
```

## 7) Instalar e compilar assets (Vite)

Instale dependências do front:

```bash
npm install
```

### Desenvolvimento (watch/HMR)

Em um terminal:

```bash
npm run dev
```

E em outro terminal, mantenha o backend servindo pelo Laragon (Apache/Nginx) **ou** rode o servidor do Laravel:

```bash
php artisan serve
```

### Build (modo “sem watcher”)

```bash
npm run build
```

Importante: este projeto gera build e copia dependências para um diretório público customizado:

- `public/pmar/build` (por padrão)

Isso é definido em `vite.config.js` via `publicDirectory` e `buildDirectory`.

## 8) URLs úteis

- **Portal público**: `http://angra.rj.gov.br.test/`
- **Admin**: `http://angra.rj.gov.br.test/admin/painel` (requer login)
- **Login**: `http://angra.rj.gov.br.test/login`

## Troubleshooting

### Página branca / erro 500

- Verifique `storage/logs/laravel.log`
- Rode:

```bash
php artisan optimize:clear
```

### CSS/JS não carrega

- Rode `npm run build` (ou `npm run dev`)
- Confira se os arquivos estão sendo gerados em `public/pmar/build`

### Erro de banco / “Unknown database”

- Crie a base que está no `.env` **ou** ajuste as conexões extras para uma base existente.

### Erro com Node

- Use a versão de Node compatível com o `package.json` (recomendado Node 23.x)
- Apague cache/instalação e reinstale:

```bash
rm -rf node_modules
npm install
```

## Comandos rápidos (resumo)

```bash
composer install
php artisan key:generate
php artisan migrate
php artisan storage:link
npm install
npm run dev
```

