Outfit Vision é uma app de guarda-roupa digital com frontend em Expo/React Native e backend em FastAPI.
- Abre a pasta raiz
OutfitVisionno VS Code. - Trabalha com dois terminais separados: um para
backende outro parafrontend. - Antes de arrancar a app, confirma que tens o MongoDB a correr localmente. Se não estiver disponível, o backend sobe com armazenamento temporário em memória para desenvolvimento.
- Node.js 20 ou superior
- Python 3.12+ ou compatível
- MongoDB local a correr em
mongodb://localhost:27017
O backend fica na pasta backend/.
O backend lê a ligação à base de dados a partir de backend/.env:
MONGO_URL=mongodb://localhost:27017
DB_NAME=outfit_visionSe estiveres a usar MongoDB local, confirma que o serviço está a correr antes de arrancar a API. Se quiseres usar MongoDB Atlas ou outro servidor remoto, troca MONGO_URL para a tua string de ligação.
Se o MongoDB Compass mostrar Failed to connect to localhost:27017, normalmente quer dizer que o servidor MongoDB não está instalado ou não está a correr. No Windows, confirma se existe o serviço MongoDB e se está Running. Se preferires não usar MongoDB local, podes criar uma base de dados no MongoDB Atlas e colar a string de ligação no MONGO_URL.
As imagens não são guardadas como ficheiros no disco. Cada peça fica com o campo image_base64 dentro do documento da coleção items na base de dados.
O projeto usa a base de dados outfit_vision e cria as coleções users e items automaticamente quando guardas o primeiro utilizador ou a primeira peça. Se quiseres criar tudo manualmente, faz assim:
- Abre o MongoDB Compass ou o
mongosh. - Liga-te ao servidor
mongodb://localhost:27017. - Cria a base de dados
outfit_vision. - Cria as coleções
userseitemsdentro dessa base de dados.
No mongosh, os comandos são estes:
use outfit_vision
db.createCollection("users")
db.createCollection("items")Se preferires, também podes simplesmente arrancar o backend e fazer o primeiro registo na app; a base de dados e as coleções aparecem automaticamente com a primeira gravação.
-
Cria e ativa um ambiente virtual, se ainda não existir.
Set-Location backend python -m venv .venv Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned .\.venv\Scripts\Activate.ps1
-
Instala as dependências.
pip install -r requirements.txt -
Confirma que o ficheiro
backend/.envexiste e tem, no mínimo, estas variáveis:MONGO_URL=mongodb://localhost:27017 DB_NAME=outfit_vision JWT_SECRET=dev-secret-key-change-in-production JWT_ALGORITHM=HS256 API_HOST=0.0.0.0 API_PORT=8000 GEMINI_API_KEY= GEMINI_MODEL=gemini-2.5-flash
-
Arranca a API.
uvicorn server:app --reload --host 0.0.0.0 --port 8000
-
Abre
http://localhost:8000/api/para confirmar que a API responde comstatus: ok.
O frontend fica na pasta frontend/.
-
Instala as dependências.
Set-Location frontend npm installPodes usar
yarn installse preferires seguir opackageManagerdefinido no projeto. -
Arranca a app.
npm start
-
Se precisares de abrir em alvos específicos, usa:
npm run android npm run ios npm run web
- O frontend está a arrancar com
npm starte o lint passa com um aviso apenas em frontend/app/(tabs)/home.tsx. - O backend tenta usar MongoDB local primeiro; se não estiver disponível, entra em modo temporário em memória para desenvolvimento e grava os dados em backend/.devdata/fallback_db.json.
- A IA usa diretamente a API do Gemini quando
GEMINI_API_KEYestá configurada; sem chave, o backend volta para uma análise heurística. - O teste em backend/tests/test_outfit_vision.py aponta para um endpoint remoto; se esse ambiente não estiver disponível, o teste devolve 404.
backend/- API FastAPI, autenticação, CRUD de peças e sugestões de outfits.frontend/- App Expo com navegação por tabs.design_guidelines.json- guia visual e de comportamento da interface.
- Se o backend falhar logo ao arrancar, confirma primeiro
MONGO_URLeDB_NAME. - Se a app mobile não encontrar a API, verifica o endereço configurado em
frontend/src/lib/api.ts.