Sistema web para gestão de ONGs de proteção animal, facilitando o cadastro de organizações, busca de animais perdidos e processo de adoção.
Patas Perdidas é uma plataforma desenvolvida como parte do curso de Desenvolvimento de Sistemas do SENAC, com o objetivo de conectar ONGs de proteção animal, tutores que perderam seus pets e pessoas interessadas em adotar animais.
- 👤 Login: Sistema de autenticação de usuários
- 🏠 Adoção de Animais: Plataforma para divulgar animais disponíveis para adoção
- 🔍 Busca de Animais Perdidos: Sistema para reportar e encontrar pets desaparecidos
- 💝 Apoiar: Formas de contribuir com a causa animal
- Node.js - Runtime JavaScript servidor
- Express 5.1.0 - Framework web minimalista e flexível
- Sequelize 6.37.7 - ORM para Node.js com suporte a MySQL
- MySQL2 3.15.3 - Driver MySQL para Node.js
- JWT (jsonwebtoken) - Autenticação baseada em tokens
- CORS 2.8.5 - Middleware para requisições cross-origin
- dotenv 17.2.3 - Gerenciamento de variáveis de ambiente
- Nodemon 3.1.11 - Reinicialização automática em desenvolvimento
petz-api/
├── src/
│ ├── config/
│ │ └── db.js # Configuração Sequelize + MySQL
│ ├── database/
│ │ ├── index.js # Carregamento de modelos
│ │ ├── migrations/ # Migrações do banco
│ │ └── seeders/ # Seeds para dados iniciais
│ ├── models/
│ │ ├── User.js # Modelo de usuário
│ │ └── Pet.js # Modelo de pet
│ ├── controllers/
│ │ ├── auth.controller.js # Lógica de autenticação
│ │ ├── users.controller.js # Lógica de usuários
│ │ └── pets.controller.js # Lógica de pets
│ ├── routes/
│ │ ├── auth.routes.js # Rotas de login/register
│ │ ├── users.routes.js # Rotas de usuários (CRUD)
│ │ └── pets.routes.js # Rotas de pets (CRUD)
│ ├── services/
│ │ ├── auth.service.js # Serviços de autenticação
│ │ ├── users.service.js # Serviços de usuários
│ │ └── pets.service.js # Serviços de pets
│ ├── middlewares/
│ │ ├── auth.middleware.js # Validação de JWT
│ │ └── error.middleware.js # Tratamento de erros
│ ├── utils/
│ │ ├── generateToken.js # Geração de JWT
│ │ └── hashPassword.js # Hash de senhas
│ ├── app.js # Configuração Express
│ └── server.js # Inicialização do servidor
├── .env # Variáveis de ambiente
├── package.json # Dependências
└── README.md # Este arquivo
- Node.js 18+
- npm, yarn, pnpm ou bun
- MySQL 5.7+ (ou MariaDB)
- Clone o repositório:
git clone https://github.com/rodrigo749/petz-api.git
cd petz-api- Instale as dependências:
npm install- Configure as variáveis de ambiente:
Edite o arquivo .env com suas credenciais:
# Server Configuration
PORT=3000
NODE_ENV=development
# Database Configuration
DB_HOST=localhost
DB_PORT=3306
DB_NAME=petz_db
DB_USER=root
DB_PASSWORD=
# JWT Configuration
JWT_SECRET=your_jwt_secret_key_here_change_in_production
# API Configuration
API_URL=http://localhost:5000- Inicie o servidor:
npm run devO servidor estará disponível em http://localhost:3000
npm start- Servidor de produçãonpm run dev- Servidor de desenvolvimento com Nodemon (recarregamento automático)npm test- Executar testes (a configurar)
POST /api/auth/login- Login de usuárioPOST /api/auth/register- Registro de novo usuário
GET /api/users- Listar todos os usuáriosGET /api/users/:id- Obter usuário específicoPUT /api/users/:id- Atualizar usuário (autenticado)DELETE /api/users/:id- Deletar usuário (autenticado)
GET /api/pets- Listar todos os petsGET /api/pets/:id- Obter pet específicoPOST /api/pets- Criar novo pet (autenticado)PUT /api/pets/:id- Atualizar pet (autenticado)DELETE /api/pets/:id- Deletar pet (autenticado)
A API utiliza JWT (JSON Web Tokens) para autenticação.
Para acessar rotas protegidas, inclua o token no header:
Authorization: Bearer <seu_token_aqui>O projeto segue o padrão MVC (Model-View-Controller) com camada de serviços:
- Models: Definem a estrutura dos dados
- Controllers: Lógica de requisição/resposta HTTP
- Services: Lógica de negócio
- Routes: Definição de endpoints
- Middlewares: Processamento de requisições