gastandoya-api
Integrações que respeitam fronteiras.
Backend do GastandoYa com OAuth Notion, descoberta de databases e leitura normalizada de despesas.
Problema
Conectar contas Notion distintas e normalizar despesas para um app iOS.
Minha contribuição
Desenvolvimento e manutenção do projeto pessoal.
THE PIPELINE / SYSTEM MAP
gastandoya-api
Do OAuth por usuário às despesas normalizadas para o app iOS.
Etapa 1 / 6
App iOS
Iniciar autorização e consumir os endpoints do backend com os cabeçalhos documentados.
Etapa 2 / 6
Backend & OAuth
Iniciar autorização, validar state no callback e trocar o code por token no servidor.
Etapa 3 / 6
Conexão por usuário
UserNotionConnectionStore usa KV quando configurado ou memória como fallback. Tokens não seguem para o cliente.
Etapa 4 / 6
Database discovery
Descobrir databases via Blocks API ou Search API e lidar com paginação e seleção.
Etapa 5 / 6
Serviço de despesas
Consultar o database selecionado e normalizar registros no formato ExpenseDTO.
Etapa 6 / 6
ExpenseDTO → iOS
O app recebe dados normalizados; o callback OAuth retorna pelo deep link intermediário.
Conexões ficam no servidor; o cliente consome um contrato de despesas.
Conexões e condições
- App iOS → Backend & OAuthAutoriza a conexão
- Backend & OAuth → Conexão por usuárioArmazena token no servidor
- Conexão por usuário → Database discoveryFornece conexão Notion
- Database discovery → Serviço de despesasDatabase configurado
- Serviço de despesas → ExpenseDTO → iOSNormaliza a resposta
- ExpenseDTO → iOS → App iOSExibe as despesas
Percurso ilustrativo dos componentes documentados, sem execução dos projetos. Fontes consultadas em 2026-10-28.
Explore os componentes ou reproduza o percurso.
Decisão de engenharia
Conexões por usuário ficam no backend; o cliente recebe dados normalizados.
Trade-off
Discovery e paginação exigem lidar com páginas sem database ou com múltiplas opções.
Evidência
O backend oferece conexão OAuth por usuário, descoberta de databases e retorno normalizado de despesas; o README documenta o fluxo de integração com iOS.
Documentação do projeto ↗