O ConectaPet é uma API RESTful desenvolvida como projeto de conclusão do curso Geração Tech 2.0. Esta aplicação fornece toda a infraestrutura backend necessária para um sistema completo de adoção de animais de estimação, incluindo:
- 🔐 Sistema de autenticação e autorização com JWT
- 👥 Gerenciamento completo de usuários (guardiões e adotantes)
- 🐕 Cadastro e gerenciamento de pets disponíveis para adoção
- 📝 Controle do processo de adoção
- 📧 Envio de e-mails de verificação e notificações
- 📸 Upload e gerenciamento de imagens
- 📚 Documentação interativa com Swagger
O projeto foi desenvolvido seguindo as melhores práticas de desenvolvimento, com foco em arquitetura limpa, segurança e integração com o frontend.
- Node.js – Ambiente de execução JavaScript
- Express – Framework web para construção de APIs REST
- MySQL – Banco de dados relacional
- Sequelize – ORM para modelagem e manipulação do banco de dados
- Bcrypt – Criptografia de senhas
- JSON Web Token (JWT) – Autenticação baseada em tokens
- CORS – Controle de acesso entre diferentes origens
- Joi – Validação de dados no backend
- Multer – Manipulação de uploads de arquivos
- Nodemailer – Envio de e-mails via SMTP
- Dotenv – Gerenciamento de variáveis de ambiente
- Nodemon – Reinício automático do servidor durante o desenvolvimento
- Jest – Testes unitários e de integração
- Swagger JS Docs e UI Express – Documentação interativa da API
- Node.js (v14 ou superior)
- MySQL (v5.7 ou superior)
- Git
-
Clone o repositório
git clone https://github.com/flaviare1s/conectapet-back.git cd conectapet-back -
Instale as dependências
npm install
-
Configure as variáveis de ambiente
- Copie o arquivo
.env.examplepara.env - Configure as seguintes variáveis:
DB_HOST=localhost DB_USER=seu_usuario DB_PASSWORD=sua_senha DB_NAME=conectapet_db JWT_SECRET=sua_chave_secreta EMAIL_USER=seu_email@gmail.com EMAIL_PASS=sua_senha_email
- Copie o arquivo
-
Crie o banco de dados
CREATE DATABASE conectapet_db;
-
Inicie o servidor
npm start
-
Popular o banco com dados de exemplo (opcional)
npm run seed
-
Acesse a documentação Swagger
npm run swagger
Abra o navegador em:
http://localhost:3000/api-docs
Execute os testes unitários e de integração com Jest:
npm run testBranch de testes: tests
- Frontend: Hospedado na Vercel
- Backend: Hospedado no Render
- Banco de Dados: TiDB Cloud
🔗 Aplicação em Produção: https://conectapet-front.vercel.app/
POST /request-verification - Solicitar verificação de e-mail para novo usuário
POST /verify-email - Verificar e-mail e criar conta
POST /auth - Login do usuário
POST /auth/refresh-token - Renovar token JWT
GET /users - Listar todos os usuários
GET /users/:id - Buscar usuário por ID
PUT /users/:id - Atualizar dados do usuário
DELETE /users/:id - Remover usuário
POST /pets - Cadastrar novo pet
GET /pets - Listar todos os pets
GET /pets/:id - Buscar pet por ID
PUT /pets/:id - Atualizar dados do pet
DELETE /pets/:id - Remover pet
POST /adoptions - Solicitar adoção de pet
GET /adoptions - Listar solicitações de adoção (guardião)
GET /adoptions/:id - Buscar solicitação por ID
PUT /adoptions/:id - Atualizar status da adoção (guardião)
DELETE /adoptions/:id - Cancelar solicitação de adoção
Para detalhes completos dos endpoints, acesse a documentação Swagger em /api-docs
Para o funcionamento completo da aplicação, é necessário executar também o frontend:
Repositório do Frontend: conectapet-front
⚠️ Nota: A porta padrão esperada para o backend é a 3000.
conectapet-back/
├── src/
│ ├── config/ # Configurações (banco de dados, etc)
│ ├── controllers/ # Controladores das rotas
│ ├── middlewares/ # Middlewares (autenticação, erros, etc)
│ ├── models/ # Modelos do Sequelize
│ ├── repositories/ # Camada de acesso a dados
│ ├── routes/ # Definição das rotas
│ ├── seeders/ # Seeds para popular o banco
│ ├── services/ # Lógica de negócio
│ └── utils/ # Funções utilitárias
├── uploads/ # Arquivos enviados (imagens)
├── .env.example # Exemplo de variáveis de ambiente
└── package.json # Dependências do projeto
| Desenvolvedor | GitHub |
|---|---|
| André | @AndreFMoura11 |
| Flávia | @flaviare1s |
| Lucas | @1uc-dev |
| Olavo | @olavoVieira |
| Palloma | @pallomadvm |
Este projeto foi desenvolvido para fins educacionais como parte do curso Geração Tech 2.0.
