# Ranch.App - Sistema de Monitoramento de Bezerros

Sistema web completo para monitoramento e gestão de bezerros, desenvolvido em PHP com MySQL e interface responsiva usando Bootstrap 5, com pipeline frontend via Vite.

## 🐄 Características

- **Interface Responsiva**: Funciona perfeitamente em desktop, tablet e smartphone
- **Sistema de Autenticação**: Login seguro com sessões PHP
- **CRUD Completo**: Cadastro, visualização, edição e exclusão de animais
- **Upload de Fotos**: Sistema seguro para upload e armazenamento de fotos
- **Cálculo Automático**: Idade e status dos animais calculados automaticamente
- **API REST**: Endpoints para integração com outros sistemas
- **Dashboard Interativo**: Estatísticas e gráficos do rebanho
- **Sistema de Vacinas**: Controle de vacinas e datas de aplicação
- **Exportação de Dados**: Exportação para CSV
- **Segurança**: Proteção contra SQL Injection, XSS e outros ataques

## 🚀 Instalação

### Pré-requisitos

- PHP 7.4 ou superior
- MySQL 5.7 ou superior
- Apache/Nginx com mod_rewrite habilitado
- Extensões PHP: PDO, PDO_MySQL, GD (para processamento de imagens)
- Node.js 18+ (para build de assets com Vite)

### Passos para Instalação

1. **Clone ou baixe o projeto**
   ```bash
   git clone https://github.com/seu-usuario/rebanho_app.git
   cd rebanho_app
   ```

2. **Configure o banco de dados**
   - Crie um banco de dados MySQL chamado `rebanho_app`
   - Importe o arquivo `database/rebanho.sql` no seu MySQL
   - Ou execute o script SQL diretamente no seu gerenciador de banco

3. **Configure a conexão com o banco (recomendado por variáveis de ambiente)**
   - Defina no ambiente:
   - `DB_HOST`, `DB_PORT`, `DB_NAME`, `DB_USER`, `DB_PASS`, `DB_CHARSET`

4. **Configure o servidor web**
   - Aponte o DocumentRoot para a pasta `public/`
   - Ou configure um VirtualHost apontando para a pasta `public/`
   - Certifique-se de que o mod_rewrite está habilitado

5. **Configure as permissões**
   ```bash
   chmod 755 public/uploads/animais
   chmod 644 config/db.php
   chmod 644 config/config.php
   ```

6. **Acesse o sistema**
   - Abra seu navegador e acesse: `http://localhost/rebanho_app/public/`
   - Use as credenciais padrão:
     - **Usuário**: admin
     - **Senha**: admin123

7. **Frontend com Vite (opcional, recomendado)**
   ```bash
   npm install
   npm run build
   ```
   - Para desenvolvimento com hot reload:
   ```bash
   $env:VITE_USE_DEV_SERVER="1"
   npm run dev
   ```

## 📁 Estrutura do Projeto

```
rebanho_app/
├── config/
│   ├── db.php                  # Configuração da conexão PDO com MySQL
│   └── config.php              # Configurações gerais (timezone, constantes)
├── public/
│   ├── css/
│   │   └── style.css           # Estilos personalizados
│   ├── js/
│   │   └── script.js           # Scripts JS personalizados
│   ├── uploads/
│   │   └── animais/            # Fotos dos bezerros
│   ├── index.php               # Página de login
│   ├── dashboard.php           # Painel inicial com resumo dos dados
│   ├── animais.php             # Listagem e pesquisa dos animais cadastrados
│   ├── animal_form.php         # Formulário para cadastro e edição de animal
│   └── logout.php              # Logout do sistema
├── controllers/
│   ├── AuthController.php      # Gerencia login, logout e sessões
│   └── AnimalController.php    # Funções CRUD para os animais
├── models/
│   └── Animal.php              # Classe Animal para operações no banco
├── api/
│   ├── auth.php                # API para autenticação via token
│   ├── animais.php             # Endpoints REST para CRUD de animais
│   └── change_password.php     # API para alteração de senha
├── views/
│   ├── header.php              # Cabeçalho comum (menu, navbar responsiva)
│   └── footer.php              # Rodapé comum
├── database/
│   └── rebanho.sql             # Script SQL para criação das tabelas
└── .htaccess                   # Configurações para segurança e URL amigável
```

## 🔧 Configuração

### Configurações do Sistema

Edite o arquivo `config/config.php` para ajustar:

- **Timezone**: `date_default_timezone_set('America/Sao_Paulo')`
- **Tamanho máximo de upload**: `UPLOAD_MAX_SIZE` (padrão: 5MB)
- **Tipos de imagem permitidos**: `ALLOWED_IMAGE_TYPES`
- **URL base**: `BASE_URL`
- **Chave secreta JWT**: `JWT_SECRET`

### Configurações de Segurança

O arquivo `.htaccess` já inclui:

- Proteção contra listagem de diretórios
- Bloqueio de acesso a arquivos sensíveis
- Headers de segurança (XSS, Clickjacking)
- Compressão GZIP
- Cache para arquivos estáticos

## 📱 Funcionalidades

### Dashboard
- Estatísticas gerais do rebanho
- Distribuição por idade (Bezerros, Jovens, Adultos)
- Distribuição por sexo (Machos, Fêmeas)
- Gráficos interativos
- Alertas de vacinas pendentes
- Ações rápidas

### Gestão de Animais
- **Cadastro**: Formulário completo com validação
- **Listagem**: Tabela responsiva com paginação
- **Busca**: Por brinco, raça ou observações
- **Filtros**: Por sexo e raça
- **Edição**: Atualização de dados
- **Exclusão**: Com confirmação
- **Visualização**: Ficha completa do animal

### Upload de Fotos
- Suporte a JPG, JPEG e PNG
- Tamanho máximo configurável
- Validação de tipo e tamanho
- Preview da imagem
- Armazenamento seguro

### Sistema de Vacinas
- Controle de vacinas aplicadas
- Datas de aplicação e próximas doses
- Alertas para vacinas pendentes
- Histórico de vacinação

### API REST
- **Autenticação**: `POST /api/auth`
- **Listar animais**: `GET /api/animais`
- **Buscar animal**: `GET /api/animais/{id}`
- **Criar animal**: `POST /api/animais`
- **Atualizar animal**: `PUT /api/animais/{id}`
- **Deletar animal**: `DELETE /api/animais/{id}`

## 🔐 Segurança

### Autenticação
- Sessões PHP seguras
- Hash bcrypt para senhas
- Proteção contra força bruta
- Logout automático

### Validação de Dados
- Sanitização de inputs
- Validação no backend
- Prepared statements (PDO)
- Proteção contra SQL Injection

### Upload de Arquivos
- Validação de tipo MIME
- Verificação de extensão
- Limite de tamanho
- Nomes únicos para arquivos

## 📊 Banco de Dados

### Tabelas Principais

**usuarios**
- id, username, password, nome, email, created_at, updated_at

**animais**
- id, brinco, raca, sexo, data_nascimento, peso_nascimento, foto, observacoes, created_at, updated_at

**vacinas**
- id, animal_id, tipo_vacina, data_aplicacao, proxima_dose, observacoes, created_at

### Índices Otimizados
- brinco (UNIQUE)
- raca, sexo, data_nascimento
- animal_id (vacinas)

## 🚀 Deploy em Produção

### HostGator/Shared Hosting
1. Faça upload dos arquivos via FTP
2. Configure o banco de dados no painel
3. Importe o arquivo `database/rebanho.sql`
4. Configure variáveis `DB_*`, `APP_ENV=production`, `BASE_URL` e `JWT_SECRET`
5. Configure o domínio para apontar para a pasta `public/`
6. Consulte `DEPLOY_HOSTGATOR.md` para checklist completo

### VPS/Dedicated Server
1. Clone o repositório
2. Configure o VirtualHost apontando para `public/`
3. Configure o banco de dados
4. Ajuste as permissões
5. Configure SSL/HTTPS

### Configurações Recomendadas para Produção
```php
// config/config.php
define('BASE_URL', 'https://seudominio.com/');
ini_set('session.cookie_secure', 1); // Para HTTPS
```

## 🔧 Manutenção

### Backup
- Faça backup regular do banco de dados
- Backup das fotos em `public/uploads/animais/`
- Backup dos arquivos de configuração

### Logs
- Erros PHP: `logs/php_errors.log`
- Logs do Apache/Nginx
- Logs de acesso

### Atualizações
- Mantenha o PHP atualizado
- Atualize as dependências
- Monitore vulnerabilidades de segurança

## 🤝 Contribuição

1. Fork o projeto
2. Crie uma branch para sua feature (`git checkout -b feature/AmazingFeature`)
3. Commit suas mudanças (`git commit -m 'Add some AmazingFeature'`)
4. Push para a branch (`git push origin feature/AmazingFeature`)
5. Abra um Pull Request

## 📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo `LICENSE` para mais detalhes.

## 📞 Suporte

Para suporte, envie um email para suporte@rebanhoapp.com ou abra uma issue no GitHub.

## 🎯 Roadmap

- [ ] Sistema de pesagens
- [ ] Controle de reprodução
- [ ] Relatórios avançados
- [ ] App mobile
- [ ] Integração com balanças
- [ ] Sistema de alertas por email
- [ ] Backup automático
- [ ] Múltiplos usuários com permissões

---

**Desenvolvido com ❤️ para pecuaristas brasileiros**
