Backend (FastAPI):
- Criar venv e instalar deps:
cd backend
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt- (Opcional) Banco Postgres (Neon/Supabase):
- Crie uma connection string e salve em
backend/.env:
SECRET_KEY=<sua-chave-secreta>
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=60
DATABASE_URL=postgresql://USUARIO:SENHA@HOST:PORT/DB?sslmode=require
- Migrações:
.venv\Scripts\python.exe -m alembic upgrade head- Rodar API:
uvicorn app.main:app --reload- Swagger: http://127.0.0.1:8000/docs
- Health: http://127.0.0.1:8000/health
Mobile (Expo):
- App funcional em
mobile53/:
cd mobile53
npm i
npx expo start --tunnel --clear- API base (ajuste se necessário) em
mobile53/App.js:
const API_BASE = "https://<seu_tunel_ou_ip>/api/v1";- Backend
- Postgres + Alembic (ok); Refresh token e CORS explícito
- Observabilidade (logs estruturados, métricas)
- CI (Actions) com testes (ok) e build de imagem (ok)
- Mobile
- UX: loading/erros, logout automático em 401
- Pull-to-refresh e melhorias visuais
- Infra
- Docker compose (Postgres+API) local (ok) e deploy simples
API com FastAPI e app móvel (Expo/React Native) demonstrando:
- Autenticação com JWT (registro/login)
- CRUD de itens por usuário
- Banco relacional (SQLite por padrão; suporte a Postgres)
- Estrutura organizada para evoluções futuras
Pré-requisitos:
- Python 3.11+
Passos:
- Crie um ambiente virtual e instale as dependências:
cd backend python -m venv .venv .venv\Scripts\Activate.ps1 # Windows PowerShell pip install -r requirements.txt
- Execute a API em modo desenvolvimento:
uvicorn app.main:app --reload
- Acesse a documentação:
- Swagger: http://127.0.0.1:8000/docs
- Redoc: http://127.0.0.1:8000/redoc
- POST
/api/v1/auth/register— cria usuário e retorna token - POST
/api/v1/auth/login— autentica e retorna token (OAuth2 password) - GET
/api/v1/items/— lista itens do usuário (Bearer token) - POST
/api/v1/items/— cria item do usuário (Bearer token) - GET
/api/v1/items/{id}— detalhe do item (Bearer token) - PUT
/api/v1/items/{id}— atualiza item (Bearer token) - DELETE
/api/v1/items/{id}— remove item (Bearer token) - GET
/health— status da API
Crie um arquivo .env (opcional):
SECRET_KEY=troque-essa-chave
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=60
DATABASE_URL=sqlite:///./app.db
Para Postgres:
DATABASE_URL=postgresql+psycopg2://usuario:senha@localhost:5432/nome_db
(Instale também psycopg2-binary.)
Pré-requisitos:
- Node 18+
- npm ou yarn
Passos:
- Instale dependências:
cd mobile npm i npm run start - Abra o app no dispositivo (Expo Go) ou emulador.
Observação: se for testar no dispositivo físico, troque API_BASE em mobile/App.js para o IP da sua máquina na rede local, por exemplo:
const API_BASE = "http://192.168.0.10:8000/api/v1";Notas:
- O app mobile possui navegação (React Navigation) e CRUD completo com edição/remoção.
- Caso já tenha instalado anteriormente, rode
npm inovamente após as novas dependências.
- Upload de imagem por item e pré-visualização
- Estado global (Zustand/Context) e testes E2E (Detox/Expo Router)
- Rodar API:
uvicorn app.main:app --reload - Formulário OAuth2 para login: use
usernamecomo e-mail epasswordna requisição/api/v1/auth/login
MIT