Transformo ideias em produtos web e mobile — da interface ao backend que os sustenta.

João Paulo Santos

Desenvolvedor Full Stack

Web, mobile e backend em produção.

Trabalho com React, Next.js e TypeScript no frontend, React Native nos aplicativos publicados nas lojas e NestJS com PostgreSQL no backend. Os sistemas que ajudei a construir atendem domínios distintos e seguem em uso e manutenção.

Foto profissional de João Paulo Santos

React · Next.js · TypeScript

React Native · NestJS · PostgreSQL · AWS ECS

Aplicativos publicados na App Store e Google PlayPlataformas com múltiplos perfis de usuárioPagamentos, agendamento e eventos em produçãoPlataformas de mobilidade e serviçosManutenção e resolução de incidentesInfraestrutura em AWS ECS

Sobre mim

Sou desenvolvedor Full Stack e trabalho em produtos que estão em uso, com operação real e manutenção ativa. Atuo nas duas pontas: as interfaces web e mobile e o backend que as sustenta.

Ao longo da carreira atuei em domínios distintos: agendamento e serviços, mobilidade urbana, finanças pessoais, mercado imobiliário e gestão de eventos. Cada um impõe um conjunto próprio de regras, e parto sempre do mesmo princípio: entender a operação antes de definir a solução técnica.

Priorizo código legível e previsível, que a equipe consiga manter sem depender de quem escreveu. Na prática, isso significa cuidar da qualidade das integrações, tratar os estados de erro com atenção e manter o sistema preparado para evoluir.

Como eu trabalho

Aplicativos publicados na App Store e na Google Play, com ciclos de manutenção e novas versões
Plataformas com múltiplos perfis no mesmo sistema: cliente, prestador, motorista, passageiro e operação
Atuação em todas as camadas do produto: frontend, mobile, integrações de API e backend
Manutenção e resolução de incidentes em sistemas com operação contínua
Autenticação, integrações com serviços externos e modelagem de dados para domínios distintos
Decisões técnicas orientadas à sustentação do sistema no longo prazo

Projetos

Três projetos em detalhe: contexto, meu papel, abordagem e decisões técnicas. Em seguida, outros trabalhos e um projeto pessoal. Os nomes de produtos de clientes e parceiros são preservados.

Projeto para cliente · nome preservado

Plataforma de mobilidade urbana

Plataforma de transporte urbano em operação, com aplicativo do passageiro, aplicativo do motorista e um painel de gestão usado pela equipe de operação. Duas marcas atendem cidades diferentes a partir da mesma base de código.

Web + Mobile

Problema

O app do motorista precisa continuar funcionando com a tela bloqueada, com outro aplicativo aberto e em aparelhos com economia de bateria agressiva. Ao mesmo tempo, a operação precisa enxergar a frota em tempo real, e as duas marcas precisam evoluir juntas sem que uma atrase a outra.

Meu papel

Sou o principal desenvolvedor dos dois aplicativos e cuido das publicações na App Store e no Google Play. No backend e no painel, desenvolvo funcionalidades e participo do deploy e da operação da infraestrutura na AWS.

Abordagem

Organizei os aplicativos para trocar de marca por configuração: identidade visual, ícones, contas das lojas, notificações e ambiente de API mudam com um único comando. Escrevi módulos nativos em Kotlin e Swift para a localização em segundo plano e para exibir a oferta de corrida por cima de outros apps. No painel, construí a visão de operação ao vivo, com mapa da frota, linha do tempo das corridas e resumo do dia, além de uma versão para exibição em TV.

Resultado

Quatro aplicativos publicados, duas marcas em operação e um painel que a equipe usa no dia a dia para acompanhar a frota.

Decisões técnicas

  • • O tempo da oferta de corrida é contado pelo relógio do servidor, para que o horário do aparelho não interfira no aceite
  • • Cada motorista informa a versão do app e a atualização instalada, o que permite à operação identificar aparelhos desatualizados antes que virem problema na rua
  • • Programas de bônus para motorista e passageiro foram feitos de ponta a ponta: regra no backend, exibição nos apps e relatórios para a operação
  • • Veículos com rastreador GPS publicam a posição pelo equipamento e, se ele falhar, passam a usar o celular do motorista, com essa troca registrada
React NativeExpoTypeScriptKotlinSwiftMapboxFirebaseLaravelVue.jsMySQLRedisAWS ECSTerraform

Projeto para cliente · nome preservado

Plataforma de serviços e agendamento

Plataforma que conecta clientes a profissionais de serviços. O cliente encontra o profissional, agenda e paga pelo aplicativo; o profissional gerencia agenda, serviços, pacotes, aulas e recebimentos pelo portal web; a administração cuida da rede de profissionais, das assinaturas e da comunicação com os usuários.

Web + Mobile

Problema

Três perfis com necessidades diferentes convivendo no mesmo sistema, com um produto que precisava continuar evoluindo enquanto já estava em uso.

Meu papel

Fui um dos dois desenvolvedores centrais do aplicativo e do portal web e contribuí com a API, acompanhando o produto ao longo de várias versões.

Abordagem

No aplicativo, desenvolvi cadastro, busca de profissionais, agendamento com reagendamento e cancelamento, avaliações, pacotes, aulas e checkout com Pix e cartão parcelado. No portal, agenda, extrato e saque, promoções e pacotes. Em uma versão mais recente, entraram assinatura com cobrança recorrente, programa de fidelidade com pontos e níveis, campanhas de notificação agendadas e melhoria automática das fotos de portfólio com IA, junto com um redesign do portal a partir do Figma e uma estrutura de temas que permite trocar a marca do produto.

Resultado

Plataforma em uso nas lojas e na web, que passou por várias versões e por um rebrand sem parar a operação.

Decisões técnicas

  • • Cobrança recorrente com tokenização de cartão, e webhooks de pagamento com fila de reprocessamento e conciliação para que nenhum pagamento se perca
  • • Preço calculado no backend e entregue pronto aos clientes, para que web e mobile nunca mostrem valores diferentes
  • • Evolução incremental, sem interromper quem já usava o produto
React NativeExpoNext.jsTypeScriptNestJSPrismaPostgreSQLRedisAWS

Projeto para cliente · nome preservado

App de finanças pessoais e familiares

Aplicativo de organização financeira para pessoas e famílias, com contas, cartões, orçamentos, metas, investimentos e projetos com divisão de gastos entre os membros da casa. O produto já existia na web e precisava de um aplicativo nativo.

Mobile

Problema

Levar para o celular um produto web amplo sem perder funcionalidades, atendendo às exigências de privacidade e de conta das lojas, que são mais rígidas para aplicativos financeiros e com IA.

Meu papel

Desenvolvi o aplicativo mobile e a camada de API que o atende dentro do backend existente.

Abordagem

Planejei a paridade com a versão web em fases, com um plano de execução mantido junto do código. O aplicativo cobre compras parceladas e recorrentes, caixinhas com rendimento, carteira de investimentos e um assistente financeiro que aceita texto, voz e foto de recibo, com tradução completa e notificações para os eventos financeiros da família.

Resultado

Aplicativo com as principais funcionalidades do produto, em fase de publicação nas lojas.

Decisões técnicas

  • • Valores monetários passam por uma verificação automatizada própria, que evita erros de formatação e de escala
  • • Consentimento explícito do usuário antes de qualquer dado ser enviado ao provedor de IA
  • • Login com Apple e exclusão de conta pelo próprio aplicativo, conforme as diretrizes das lojas
React NativeExpoTypeScriptTanStack QueryNext.jsPrismaPostgreSQL

Outros projetos

Projeto para cliente · nome preservado

Plataforma de eventos e ingressos

Venda de ingressos e gestão de eventos, com compra online, ingressos por QR Code e uma área dedicada aos produtores.

Resultado: Atuei na área do produtor, com criação de eventos por lotes e painel de vendas e finanças, e levei a compra de ingressos com Pix para dentro do aplicativo de serviços da mesma empresa.

Next.jsReact NativeTypeScriptNestJSPostgreSQL

Projeto para cliente · nome preservado

Plataforma imobiliária

Aplicativo e portal web para anunciar e encontrar imóveis, conectando compradores, anunciantes e imobiliárias.

Resultado: Contribuo com novas funcionalidades e ajustes no aplicativo e no portal, conforme as demandas do produto.

React NativeNext.jsTypeScript

Uso interno de empresa

Gerenciador de QR Codes dinâmicos

Plataforma interna para criar QR Codes permanentes com destino editável: o material impresso continua válido quando a campanha muda, e cada leitura fica registrada para a equipe acompanhar.

Resultado: Desenvolvi o produto completo: modelagem de dados, autenticação, painel, testes e deploy em container.

Next.jsTypeScriptPrismaPostgreSQLDocker

Projeto pessoal

Em desenvolvimento

Glicore

Monitor de glicose para Apple Watch, integrado ao sensor de monitoramento contínuo. Nasceu de uma necessidade minha: acompanhar a glicose no pulso, sem precisar abrir o celular.

Resultado: App nativo com complicações e widgets, e um backend que consulta as leituras a cada minuto e envia alertas. Leitura fora do prazo nunca aparece como atual.

SwiftSwiftUIwatchOSNestJSPrismaPostgreSQL

Como uso minha stack no dia a dia

Desenvolvimento Frontend

Interfaces construídas a partir do fluxo real de uso do produto, com atenção a desempenho e à manutenção pela equipe.

ReactNext.jsTypeScriptTailwind CSS

Desenvolvimento Mobile

Aplicativos publicados nas lojas, com versionamento, correção de fluxos e evolução contínua. Sistemas com múltiplos perfis de usuário e regras de negócio complexas.

React NativeExpoKotlinSwiftFirebaseMapbox

Backend e Infraestrutura

APIs, autenticação, regras de negócio e a infraestrutura que sustenta esses sistemas, em domínios com exigências distintas.

Node.jsNestJSLaravelPostgreSQLMySQLPrismaRedisDockerAWS ECS

Conversas sobre produto e engenharia são sempre bem-vindas.

Esta página reúne os produtos que venho construindo e as decisões técnicas por trás deles. Para falar sobre qualquer um dos projetos, ou sobre as escolhas descritas aqui, os contatos abaixo estão à disposição.

contato@joaopaulosantos.com