Loading repository data…
Loading repository data…
Apprendendo / repository
Sistema inteligente de recomendação personalizada desenvolvido com tecnologias modernas. Este projeto demonstra a integração entre um app mobile React Native/Expo, backend Python FastAPI e APIs de IA (Claude, GPT, Gemini) para fornecer sugestões personalizadas aos usuários.
Sistema inteligente de recomendação personalizada desenvolvido com tecnologias modernas. Este projeto demonstra a integração entre um app mobile React Native/Expo, backend Python FastAPI e APIs de IA (Claude, GPT, Gemini) para fornecer sugestões personalizadas aos usuários.
O Assistente de Recomendação é uma aplicação mobile full-stack que utiliza APIs de inteligência artificial para fornecer recomendações personalizadas. O sistema permite que usuários digitem suas preferências e recebam sugestões detalhadas geradas por modelos de IA de ponta.
Este projeto foi desenvolvido com as seguintes tecnologias:
assistente-recomendacao/
├── .github/ # Configurações do GitHub (workflows, CI/CD)
├── backend/ # API Python com FastAPI
│ ├── venv/ # Ambiente virtual Python
│ ├── main.py # Aplicação principal FastAPI
│ ├── requirements.txt # Dependências Python
│ ├── setup.sh # Script de instalação
│ └── .env # Variáveis de ambiente (não commitado)
├── frontend/ # App mobile React Native + Expo
│ ├── app/ # Rotas e telas do app
│ ├── components/ # Componentes reutilizáveis
│ │ ├── styles.tsx
│ │ ├── preferences.tsx
│ │ └── recommendations.tsx
│ ├── services/ # Serviços e APIs
│ │ └── api.tsx
│ ├── tsconfig.json # Configuração TypeScript
│ ├── tailwind.config.js
│ └── package.json # Dependências do frontend
├── docs/ # Documentação do projeto
├── .gitignore # Arquivos ignorados pelo Git
├── .env # Variáveis de ambiente globais
├── .releaserc.json # Configuração de releases
├── package.json # Configurações do monorepo
├── LICENCE # Licença MIT
└── README.md # Este arquivo
Estas instruções fornecerão uma cópia do projeto em execução na sua máquina local para fins de desenvolvimento e teste.
Certifique-se de ter instalado em sua máquina:
Verifique as versões instaladas:
python3 --version
pip --version
node --version
npm --version
git --version
git clone https://github.com/Apprendendo/assistente-recomendacao.git
cd assistente-recomendacao
Certifique-se de que o .gitignore na raiz do projeto contenha:
.venv/
venv/
node_modules/
__pycache__/
.env
.expo/
cd backend
chmod +x setup.sh
./setup.sh
# Criar ambiente virtual
python3 -m venv venv
# Ativar ambiente virtual
# No Linux/Mac:
source venv/bin/activate
# No Windows:
# venv\Scripts\activate
# Instalar dependências
pip install --upgrade pip
pip install -r requirements.txt
Crie um arquivo .env na raiz do projeto (não no backend):
# Escolha qual API usar: "anthropic", "openai" ou "gemini"
API_CHOICE=anthropic
# Tokens das APIs (obtenha em suas respectivas plataformas)
ANTHROPIC_TOKEN=sua_chave_anthropic_aqui
OPENAI_TOKEN=sua_chave_openai_aqui
GEMINI_TOKEN=sua_chave_gemini_aqui
Onde obter os tokens:
cd ../frontend
npm install
# ou
yarn install
Arquivos importantes já configurados:
tsconfig.json - Configuração TypeScript com pathstailwind.config.js - Configuração do NativeWindcomponents/styles.tsx - Estilos e cores globaiscomponents/preferences.tsx - Input de preferênciascomponents/recommendations.tsx - Exibição de resultadosservices/api.tsx - Comunicação com backendcd backend
# Ative o ambiente virtual primeiro
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
# Inicie o servidor
uvicorn main:app --reload
O backend estará rodando em http://localhost:8000
cd frontend
npx expo start
Opções para testar o app:
w para abrir no navegador weba para abrir no emulador Androidi para abrir no simulador iOS (Mac)Após iniciar ambos os servidores:
http://localhost:8000 está rodandoNo celular físico (Recomendado):
npx expo startNo navegador web:
npx expo startw para abrir versão webEm emuladores:
a (requer Android Studio)i (requer Xcode - apenas Mac)O backend FastAPI oferece os seguintes endpoints:
curl http://localhost:8000/
Resposta:
{
"message": "API funcionando!",
"api_em_uso": "anthropic",
"token_loaded": true,
"endpoints": ["/", "/recommend (GET)", "/recommend (POST)"]
}
curl -X POST http://localhost:8000/recommend \
-H "Content-Type: application/json" \
-d '{"preferences": "filmes de ação e aventura"}'
Resposta:
{
"recommendations": "1. Mad Max: Fury Road - ...\n2. Indiana Jones - ...",
"api_used": "anthropic"
}
curl http://localhost:8000/recommend
O projeto suporta três APIs de IA. Configure a variável API_CHOICE no .env:
API_CHOICE=anthropic (modelo: claude-sonnet-4)API_CHOICE=openai (modelo: gpt-3.5-turbo)API_CHOICE=gemini (modelo: gemini-2.5-flash)cd backend
source venv/bin/activate # Ativar ambiente virtual
# Testar endpoints manualmente
curl http://localhost:8000/
curl -X POST http://localhost:8000/recommend \
-H "Content-Type: application/json" \
-d '{"preferences": "filmes de ficção científica"}'
O Expo permite testes em tempo real:
cd frontend
npx expo start
# Opções de teste:
# - Pressione 'r' para reload
# - Pressione 'd' para abrir developer menu
# - Pressione 'j' para abrir debugger
frontend/
├── app/
│ ├── _layout.tsx # Layout principal e navegação
│ └── index.tsx # Tela principal do app
├── components/
│ ├── styles.tsx # Estilos e cores globais
│ ├── preferences.tsx # Input de preferências
│ └── recommendations.tsx # Exibição de resultados
└── services/
└── api.tsx # Chamadas à API backend
O FastAPI já está pronto para produção. Para deploy:
cd backend
source venv/bin/activate
# Opção 1: Com Uvicorn
uvicorn main:app --host 0.0.0.0 --port 8000
# Opção 2: Com Gunicorn + Uvicorn Workers
gunicorn main:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000
Para build de produção do app Expo:
cd frontend
# Build para Android
eas build --platform android
# Build para iOS
eas build --platform ios
# Build para ambos
eas build --platform all
Para mais informações sobre deploy, consulte a documentação do Expo EAS.
Contribuições são sempre bem-vindas! Se você quer contribuir com o projeto, siga estes passos:
git checkout -b feature/MinhaFeature)git commit -m 'Adiciona MinhaFeature')git push origin feature/MinhaFeature)Leia CONTRIBUTING.md para detalhes sobre nosso código de conduta e processo de submissão de pull requests.
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Veja também a lista de [contribuidores](https://github.com/Apprendendo/assistente-recomendacao/contrib