Contacto
Gabriel Espinheira sentado num banco num estúdio fotográfico azul-marinho, de camisa azul-clara e calças escuras.

Gabriel Espinheira, engenheiro full-stack sénior em Lisboa: engenharia com olhar de designer.

Sou o Gabriel Espinheira, engenheiro full-stack sénior em Lisboa, com mais de 12 anos de experiência. Construo produtos web de ponta a ponta, do modelo de dados à interface em que as pessoas tocam, e as funcionalidades de IA lá dentro.

Sobre mim

Trabalho selecionado.

O que tenho construído ultimamente. Desenho e desenvolvo cada produto de ponta a ponta, a dirigir agentes de programação, e cada um abre num caso de estudo sobre como foi construído.

Ver todo o trabalho

Todas as camadas, as mesmas mãos.

Uma funcionalidade costuma mudar de mãos em cada camada. Eu levo-a pelas cinco, do ecrã em que as pessoas tocam ao pipeline que a publica, para que nada se perca pelo caminho. Cada alteração começa com um teste que falha.

  1. 1Design UX/UIaquilo em que as pessoas tocam

    Um modelo de dados, todos os ecrãs. Começo onde as pessoas tocam: Next.js na web, React Native nos telemóveis, Electron no desktop. As três leem os mesmos tipos partilhados, por isso uma alteração ao modelo é verificada em todas as apps.

    • Next.js
    • React Native
    • Electron
  2. 2Estadoaquilo em que o ecrã acredita

    Nunca fazer o utilizador esperar. O ecrã mexe primeiro com uma atualização otimista e volta atrás se o servidor recusar. Cada valor tem um único dono, uma cache de queries, uma store ou um formulário, para que o ecrã e o servidor nunca discutam.

    • TanStack Query
    • Zustand
    • React Hook Form
  3. 3API / MCPquem pode fazer o quê

    Nenhuma porta especial para agentes. Por trás do ecrã há uma só API que as apps e os agentes de IA chamam, por REST ou MCP. O servidor valida e autoriza cada pedido, venha de quem vier.

    • Node.js
    • MCP servers
    • Zod
  4. 4Dadosaquilo que se guarda

    Dar aos dados a forma do ecrã que os lê. O esquema parte dos ecrãs: em Convex ou PostgreSQL, cada lista tem o índice de que precisa, para carregar por ordem sem varrer a tabela.

    • Convex
    • PostgreSQL
    • Prisma
  5. 5Infraestruturacomo é publicado

    Testar antes de publicar, medir depois. Cada pull request corre lint, tipos e testes no CI e publica a sua própria pré-visualização antes de entrar. Depois de estar em produção, o PostHog mostra como as pessoas o usam, para que a próxima alteração parta de dados reais.

    • Vercel
    • AWS
    • PostHog

Diga olá.

Uma função a tempo inteiro ou um produto para construir. Leio todas as mensagens pessoalmente e respondo em 2 dias úteis.

Sobre o que é?

Saiba como trato os seus dados na política de privacidade.

Gabriel Espinheira

Engenheiro Full-Stack Sénior