
Gradução em Tecnólogia em Análise e Desenvolvimento de Sistemas
Projeto Integrador Extensionista III
O Adote I.F é uma plataforma web completa para adoção de pets, desenvolvida como um projeto acadêmico. O sistema permite que usuários criem publicações de animais disponíveis para adoção e se conectem via WhatsApp para facilitar o processo de adoção.
Vídeo de demonstração:- Framework: React 18.2.0 com Vite
- Styling: Tailwind CSS 3.3.0
- Roteamento: React Router DOM 6.8.1
- Ícones: Lucide React 0.263.1
- Linguagem: JavaScript (JSX)
- Framework: Flask 2.3.3 (Python)
- Banco de Dados: MongoDB (Atlas)
- Autenticação: Sistema de sessões com bcrypt
- CORS: Flask-CORS 4.0.0
- Deploy: Render.com
- Sistema de login e cadastro
- Gerenciamento de sessões com timeout automático
- Verificação de atividade do usuário
- Logout automático por inatividade
- Criação de posts com foto, título e descrição
- Categorização por tipo de animal (cão/gato)
- Visualização em grid responsivo
- Modal com detalhes completos do pet
- Integração com WhatsApp para contato direto
- Link automático com mensagem pré-formatada
- Exibição de informações do responsável
- Visualização de publicações próprias
- Gerenciamento de posts (exclusão)
- Badge para administradores
- Node.js (versão 16 ou superior)
- Python 3.8 ou superior
- MongoDB Atlas (conta gratuita)
- Git
- Clone o repositório:
git clone [url-do-repositorio]
cd "Adote I.F - PIE3"
- Navegue para o diretório do backend:
cd backend
- Instale as dependências Python:
pip install flask==2.3.3
pip install flask-cors==4.0.0
pip install pymongo==4.5.0
pip install bcrypt==4.0.1
pip install PyJWT==2.8.0
pip install gunicorn==21.2.0
Ou use o arquivo requirements.txt:
pip install -r requirements.txt
- Configure as variáveis de ambiente:
Crie um arquivo
.env
ou configure no sistema:
# Opcional - o sistema usa valores padrão
SECRET_KEY=sua_chave_secreta_aqui
MONGO_URI=sua_string_de_conexao_mongodb
- Execute o servidor:
python app.py
O backend estará disponível em http://localhost:5000
- Navegue para o diretório do frontend:
cd frontend
- Instale as dependências base:
npm install
- Instale as dependências específicas:
# Dependências principais
npm install react@^18.2.0
npm install react-dom@^18.2.0
npm install react-router-dom@^6.8.1
npm install lucide-react@^0.263.1
# Dependências de desenvolvimento
npm install -D @types/react@^18.2.15
npm install -D @types/react-dom@^18.2.7
npm install -D @vitejs/plugin-react@^4.0.3
npm install -D autoprefixer@^10.4.14
npm install -D eslint@^8.45.0
npm install -D eslint-plugin-react@^7.32.2
npm install -D eslint-plugin-react-hooks@^4.6.0
npm install -D eslint-plugin-react-refresh@^0.4.3
npm install -D postcss@^8.4.24
npm install -D tailwindcss@^3.3.0
npm install -D vite@^4.4.5
- Configure o Tailwind CSS: O projeto já possui a configuração, mas se precisar recriar:
npx tailwindcss init -p
- Execute o servidor de desenvolvimento:
npm run dev
O frontend estará disponível em http://localhost:5173
Adote I.F - PIE3/
├── backend/
│ ├── app.py # Servidor Flask principal
│ ├── requirements.txt # Dependências Python
│ └── package.json # Configuração Node (opcional)
├── frontend/
│ ├── public/
│ │ ├── assets/
│ │ │ └── logo.png # Logo da aplicação
│ │ ├── favico.png # Favicon
│ │ └── vite.svg # Ícone do Vite
│ ├── src/
│ │ ├── components/
│ │ │ ├── defaults/
│ │ │ │ ├── HotBar.jsx # Barra de navegação inferior
│ │ │ │ └── NavBar.jsx # Barra de navegação superior
│ │ │ ├── userdata/
│ │ │ │ └── Login.jsx # Tela de login/cadastro
│ │ │ ├── AddPost.jsx # Formulário de criação de posts
│ │ │ ├── Button.jsx # Componente de botão
│ │ │ ├── Input.jsx # Componente de input
│ │ │ ├── Profile.jsx # Perfil do usuário
│ │ │ ├── SessionInfo.jsx # Informações da sessão
│ │ │ ├── SideBar.jsx # Barra lateral (não utilizada)
│ │ │ ├── Tasks.jsx # Listagem de posts
│ │ │ └── Title.jsx # Componente de título
│ │ ├── config/
│ │ │ └── api.js # Configuração da API
│ │ ├── utils/
│ │ │ └── auth.js # Serviço de autenticação
│ │ ├── App.jsx # Componente principal
│ │ ├── main.jsx # Ponto de entrada
│ │ └── index.css # Estilos globais
│ ├── .env # Variáveis de ambiente
│ ├── .gitignore # Arquivos ignorados pelo Git
│ ├── eslint.config.js # Configuração do ESLint
│ ├── index.html # HTML principal
│ ├── package.json # Dependências Node.js
│ ├── postcss.config.js # Configuração PostCSS
│ ├── tailwind.config.js # Configuração Tailwind
│ └── vite.config.js # Configuração Vite
└── README.md
-
Crie uma conta no MongoDB Atlas:
- Acesse MongoDB Atlas
- Crie uma conta gratuita
-
Configure o cluster:
- Crie um novo cluster (Free Tier)
- Configure as credenciais de acesso
- Adicione seu IP à whitelist
-
Obtenha a string de conexão:
- Clique em "Connect"
- Escolha "Connect your application"
- Copie a string de conexão
-
Configure no backend:
# Em app.py, substitua pela sua string MONGO_URI = "mongodb+srv://usuario:[email protected]/AdoteIFTM"
- Crie conta no Render
- Conecte seu repositório GitHub
- Configure como "Web Service"
- Defina:
- Build Command:
pip install -r requirements.txt
- Start Command:
gunicorn app:app
- Environment Variables:
MONGO_URI
,SECRET_KEY
- Build Command:
- Crie conta no Vercel
- Conecte seu repositório GitHub
- Configure:
- Framework: Vite
- Build Command:
npm run build
- Output Directory:
dist
- Root Directory:
frontend
- Acesse a aplicação
- Clique em "Crie sua Conta"
- Preencha: usuário, senha e telefone
- Faça login com as credenciais criadas
- Clique no botão "+" na barra inferior
- Preencha o nome do pet
- Selecione o tipo (cão/gato)
- Adicione uma descrição
- Faça upload da foto
- Clique em "Adicionar Post"
- Navegue pelos posts na tela inicial
- Clique em um post para ver detalhes
- Clique no botão WhatsApp para contatar o responsável
- Uma mensagem será pré-formatada automaticamente
- Clique no ícone de usuário na barra inferior
- Visualize todas suas publicações
- Exclua posts que não são mais necessários
- Timeout automático de 10 minutos
- Verificação de atividade do usuário
- Limpeza automática de sessões expiradas
- Headers de segurança configurados
- Senhas criptografadas com bcrypt
- Validação de dados no frontend e backend
- Sanitização de uploads de imagem
- Proteção contra CORS
# Verifique se o backend está rodando
# Confirme a URL da API em frontend/src/config/api.js
# Verifique a string de conexão
# Confirme se seu IP está na whitelist
# Teste a conexão diretamente
# Frontend
npm install --legacy-peer-deps
# Backend
pip install --upgrade pip
pip install -r requirements.txt
# Verifique o tamanho da imagem (máximo 5MB)
# Confirme o formato (JPG, PNG, GIF)
# Teste com imagem menor
O sistema foi desenvolvido com design responsivo:
- Mobile First: Otimizado para dispositivos móveis
- Tablets: Layout adaptativo para telas médias
- Desktop: Interface completa para telas grandes
- Primária: Purple (roxo) -
#9533EC
- Secundária: Blue (azul) -
#3B82F6
- Sucesso: Green (verde) -
#10B981
- Erro: Red (vermelho) -
#EF4444
- Sistema: Usa fontes do sistema operacional
- Ícones: Lucide React (consistente e moderno)
npm run dev # Servidor de desenvolvimento
npm run build # Build para produção
npm run preview # Preview do build
npm run lint # Verificação de código
python app.py # Servidor de desenvolvimento
gunicorn app:app # Servidor de produção
- Faça fork do projeto
- Crie uma branch para sua feature
- Commit suas mudanças
- Push para a branch
- Abra um Pull Request
- M.I.T.
- Este projeto foi desenvolvido para fins educacionais como parte do curso de Graduação em Análise e Desenvolvimento de Sistemas.
- Bruno Carvalho - Desenvolvedor Full Stack
- Diogenes Cassimiro - Desenvolvedor Front-end
- Ronald Abdias - Analista de QA e Desenvolvedor BD
Para dúvidas ou problemas:
- Verifique a seção de Resolução de Problemas
- Consulte os logs do console (F12 no navegador)
- Verifique se todos os serviços estão rodando
- Confirme as configurações de ambiente
- Entre em contato via e-mail: [email protected], [email protected], [email protected]
Desenvolvido para facilitar a adoção de pets! 🐶🐱