TSB_OS
system_diagnostics.shv2.0.0

tiago@portfolio:~$ whoami

Tiago da Silva Barbosa

Desenvolvedor Mobile · Flutter / Dart

Desenvolvedor mobile focado em Flutter e Dart. Desde 2024 na Viajá, construo e mantenho o Mappa em produção: app iOS/Android e o backend web que o sustenta.

Atuo principalmente na fronteira entre o app e a plataforma: assinaturas in-app com StoreKit e Play Billing, webhooks das lojas, notificações, deep links, mapas e integrações nativas. Organizo o código em camadas com responsabilidades separadas e cubro os fluxos críticos com testes.

ROLE
Mobile Engineer @ Viajá Turismo e Tecnologia
FOCUS
Arquitetura em camadas · Testes · Integrações nativas
TARGETS
iOS · Android · Web (Next.js)
EDUCATION
Análise e Desenvolvimento de Sistemas
UPTIME
08/2024 → presente em produção

$ ls -la ./projects

Flagship Projects

7 files

Produção · Viajá$ ls ./projects/production · 3

mappa_app.savSLOT 1
Layered · Provider + BLoC

Mappa — App

Descoberta de rolês, benefícios e eventos por cidade

// problema
O app vende assinaturas nas duas lojas, e cada uma tem regras próprias de recibo, ofertas e renovação. Compras perdidas ou validadas errado viram suporte e perda de receita.
// solução
Fluxo de compra unificado com um handler global que escuta o purchaseStream o tempo todo, deduplica transações e sincroniza o status em segundo plano com o backend. Os webhooks cobrem os casos que o app não consegue ver.
  • IAP com StoreKit e Play Billing 8: ofertas de 1º mês com preço vindo da loja e fallback para atraso de propagação no iOS
  • Mapa com clusters e camada opcional de calor; campanhas mensais montadas por blocos a partir do painel
  • ApiClient com interceptor, retry e mapeamento centralizado de exceções
  • Force update por build mínimo e patches OTA via Shorebird
  • Funil de eventos da Meta deduplicado contra a Conversions API
BUILD
91.2.8+123
TEST FILES
19
TARGETS
iOS · Android
  • Flutter
  • Dart
  • Provider
  • BLoC
  • in_app_purchase
  • Firebase
  • Google Maps
  • Shorebird
mappa_web.savSLOT 2
Service Layer · REST

Mappa — Web & API

Painel admin/empresa e backend do app

// problema
O painel legado era em JavaScript e dividia os dados entre Firestore e Supabase, sem tipagem nem contrato claro com o app.
// solução
Reescrita incremental em Next.js com TypeScript, PostgreSQL via Prisma e JWT próprio. Cada módulo migrado mantém o formato de resposta legado, então o app continua funcionando durante a transição.
  • Validação de assinaturas via App Store Server API e Google RTDN (Pub/Sub); recusa compras Sandbox em produção
  • Health-check sintético do pipeline de assinaturas (Apple, Google, webhook)
  • Conversions API da Meta enviada com after() para não bloquear a resposta na Vercel
  • Curadoria de fotos com modelos de visão: Gemini como primário, GPT como fallback
  • Scripts de migração idempotentes: Firestore → PostgreSQL e Storage → S3
PRISMA MODELS
45
API DOMAINS
37
RUNTIME
Vercel
  • Next.js
  • TypeScript
  • Prisma
  • PostgreSQL
  • AWS S3
  • JWT
  • React Query
SiteRepo privado
clubpass.savSLOT 3
Provider · REST API

Clubpass

Clube de benefícios: app + painel de parceiros

// problema
Havia divergência entre o que as lojas cobravam e o acesso liberado no app, e as notificações precisavam de agendamento pelo painel.
// solução
Centralizei a lógica de direito de acesso no backend, sincronizei o token de conta do IAP e adicionei um cron de reconciliação. Também implementei o agendamento de notificações FCM pelo painel.
  • Reconciliação de assinaturas em background com autenticação por token
  • Migração do iOS para Swift Package Manager e do login para google_sign_in v7
  • Renovação de sessão via refresh token antes de deslogar o usuário
  • Dashboard de parceiros e landing page no painel web
LOCALES
PT · EN · ES
TARGETS
iOS · Android · Web
  • Flutter
  • Dart
  • Next.js
  • TypeScript
  • Prisma
  • FCM
SiteGoogle PlayRepo privado

Projetos autorais$ ls ./projects/personal · 4

prevent_calc.savSLOT 4
Pure Domain · Test-Driven

PREVENT Calculator

Estratificação de risco cardiovascular para Atenção Primária

// contexto
O projeto surgiu do TCC de um familiar da área de Medicina, que precisava transformar o protocolo de estratificação da pesquisa em uma ferramenta utilizável e buscava alguém para desenvolvê-la. Assumi o desenvolvimento de ponta a ponta. A base de cálculo é o PREVENT, material oficial da American Heart Association ao qual ele obteve acesso mediante solicitação aos autores. Por isso o repositório é privado.
// problema
A estratificação combina um fluxograma clínico com as equações AHA PREVENT. Feita à mão, é lenta e fácil de errar, e as equações oficiais só existem como pacote R.
// solução
Portei o motor PREVENT do pacote R oficial para JavaScript puro, isolado da UI e validado contra os dados de teste do próprio pacote. O questionário é declarativo e alimenta um classificador que implementa os gatilhos do fluxograma.
  • Fixture de validação gerada a partir das expressões do R, nunca editada à mão
  • TFGe por CKD-EPI 2021 e metas lipídicas por categoria de risco
  • Linguagem simples e opção “Não sei” para exames que o paciente não tem em mãos
  • 100% client-side e publicável como site estático (HashRouter)
  • Equações usadas com autorização dos autores (Khan SS et al., Circulation 2024)
TESTS
76 passing
FIXTURE
41 casos
BACKEND
none
  • React
  • Vite
  • Vitest
  • JavaScript
Repo privado
dailyflow.savSLOT 5
Layered · REST API

DailyFlow

Hábitos e rotinas, pensado para uso no celular com uma mão

// problema
Apps de produtividade costumam falhar por falta de gatilho concreto: a pessoa define o hábito, mas não o momento de executá-lo.
// solução
Hábitos modelados como intenção de implementação (“quando X, então Y”), com lembrete push disparado na hora do gatilho. O backend é dividido em rotas, controllers e services, e cada service verifica se o recurso pertence ao usuário.
  • Web Push agendado com node-cron e botão “Feito” direto na notificação
  • PWA instalável com Workbox e navegação por barra inferior
  • Sequência e consistência calculadas a cada hábito marcado
  • Self-hosted: Docker Compose e Caddy em servidor caseiro, exposto via Tailscale
PRISMA MODELS
6
TARGET
PWA
HOSTING
Self-hosted
  • React
  • Vite
  • Express 5
  • Prisma
  • PostgreSQL
  • Web Push
  • Docker
brecline.savSLOT 6
BaaS · Context API

Brecline

Marketplace de brechó com vários vendedores

// problema
Brechós pequenos vendem por mensagem, sem controle de estoque, e um item pode ser vendido duas vezes enquanto o pagamento não é confirmado.
// solução
Marketplace com carrinho dividido por vendedor e PIX gerado para cada um. O pedido reserva os itens e é cancelado automaticamente se não for pago em 15 minutos, devolvendo os produtos ao catálogo.
  • Login do comprador só com telefone; vendedores entram por convite
  • Dashboard do vendedor com confirmação de pagamento e agenda de entregas
  • Conversão de HEIC para JPEG no upload, para fotos tiradas no iPhone
  • Formulários validados com Zod e react-hook-form
AUTH
Telefone · Convite
PAYMENT
PIX
  • React
  • TypeScript
  • Vite
  • Supabase
  • Tailwind
  • shadcn/ui
  • Zod
Repo privado
fibbo_saas.savSLOT 7
BaaS · Service Layer

Fibbo

SaaS de gestão para técnicos de TI autônomos

// problema
O técnico autônomo monta orçamento de cabeça e controla serviços e agenda em planilhas soltas, sem saber quanto faturou no mês.
// solução
Calculadora de orçamento com parâmetros configuráveis por usuário (deslocamento, horas, urgência, peças), histórico de orçamentos, serviços realizados, agenda e dashboard de faturamento por período.
  • Camada de services sobre o Supabase; o dashboard agrega os dados em paralelo
  • Gráficos de faturamento e de distribuição de serviços com Recharts
  • Cadastro controlado por chave de acesso
  • Prototipado com o builder de IA Dyad
TABLES
6
STATUS
Live
  • React 19
  • Vite
  • Supabase
  • Recharts
  • react-hook-form
ProduçãoRepo privado

$ sysctl -a | grep skills

Technical Telemetry

PRODACTIVEBASE
mobile_engineering.log6 modules
MóduloDetalheStatus
Flutter / DartApps iOS e Android em produçãoPROD
StateProvider · BLoCPROD
In-App PurchaseStoreKit · Play Billing 8 · ofertasPROD
MapsGoogle Maps · flutter_map · clusters · heatmapPROD
NativeDeep links · Sign in Apple/Google · push · ATTPROD
BuildGradle · Xcode · CocoaPods · SPMACTIVE
backend_cloud.log6 modules
MóduloDetalheStatus
Next.js / TSApp Router · route handlersPROD
DataPostgreSQL · Prisma · Firestore · SupabasePROD
AuthJWT access/refresh · OAuth · OTPPROD
WebhooksApp Store Server API · Google RTDNPROD
StorageAWS S3 signed URLs · Firebase StoragePROD
AIGemini / OpenAI para visão e curadoriaACTIVE
release_quality.log5 modules
MóduloDetalheStatus
Testesflutter_test: controllers, models, servicesACTIVE
OTAShorebird code pushPROD
ReleaseApp Store Connect · Play ConsolePROD
DeployVercelPROD
ObservabilidadeHealth-check sintético de assinaturasACTIVE
toolchain.log5 modules
MóduloDetalheStatus
VCSGit · GitHubPROD
FirebaseAuth · FCM · App Check · RTDBPROD
DocsRegistro de decisões técnicas (ADR)ACTIVE
AI ToolingClaude CodeACTIVE
Web baseReact · Node.js · Python · SQL ServerBASE

$ tail -n 20 /var/log/career

Activity Log

12 events
career.logtail -f
  1. SHIP

    Mappa Web: migração para Next.js + TypeScript

    Viajá

    Backend de assinaturas, tracking server-side e pipeline de curadoria no novo stack (Prisma/PostgreSQL, S3).

  2. SHIP

    DailyFlow: PWA e lembretes push

    Projeto autoral

    Hábitos com gatilho “quando/então”, Web Push e deploy self-hosted com Docker e Caddy.

  3. SHIP

    PREVENT Calculator

    Projeto autoral

    Ferramenta desenvolvida para o TCC de um familiar da área de Medicina: porte das equações AHA PREVENT do R para JavaScript, com 76 testes validando o resultado.

  4. SHIP

    Mappa da Copa 2026

    Viajá

    Passaporte com feature flags, check-in por QR e passe consumível nas duas lojas. Corrigi em produção um bug de recibos causado pela ativação do StoreKit 2.

  5. SHIP

    Fibbo: SaaS para técnicos de TI

    Projeto autoral

    Orçamentos, agenda e dashboard de faturamento sobre Supabase.

  6. SHIP

    Brecline: marketplace de brechó

    Projeto autoral

    Checkout com PIX por vendedor e reserva de estoque com expiração.

  7. WORK

    Clubpass: app Flutter e painel web

    Viajá

    Assinaturas, notificações agendadas, dashboard de parceiros e migrações de build iOS/Android.

  8. EDU

    Análise e Desenvolvimento de Sistemas

    Centro Universitário Unifametro · 01/2023 – 07/2025

  9. WORK

    Desenvolvedor Mobile

    Viajá Turismo e Tecnologia · 08/2024 – presente

    Desenvolvimento do app Mappa (Flutter): assinaturas, mapas, benefícios, eventos e navegação. Também contribuo no painel web.

  10. EDU

    Desenvolvimento Full Stack

    Digital College · 06/2023 – 07/2024

  11. SHIP

    Projeto de extensão: detecção de vazamento de dados

    Unifametro · 01/2024 – 06/2024

    Aplicação web que verifica se dados de uma empresa ou de seus colaboradores aparecem em vazamentos.

  12. WORK

    Suporte Técnico

    3A Contabilidade e Assessoria · 07/2022 – 06/2024

    Administração de servidores, manutenção de estações e suporte aos colaboradores.