
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.
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.
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.
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
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
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
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
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
Precisa de alguém responsável pela construção?
Estou disponível para uma função a tempo inteiro ou para um projeto por contrato. Leio todas as mensagens pessoalmente e respondo em 2 dias úteis.
- Função a tempo inteiro
Um engenheiro sénior na sua equipa
Remoto no horário europeu, ou híbrido e presencial em Lisboa.Falar sobre uma função - Projeto por contrato
O seu produto, de ponta a ponta
Web, desktop e mobile em TypeScript, Next.js, Convex e Expo, incluindo funcionalidades de IA.Falar sobre um projeto

Blog.
Notas de quem constrói, em inglês: arquitetura, agentes, testes e detalhes de interface, cada uma ligada a algo que entreguei.
Diga olá.
Uma função a tempo inteiro ou um produto para construir. Leio todas as mensagens pessoalmente e respondo em 2 dias úteis.

Gabriel Espinheira
Engenheiro Full-Stack Sénior
Gabriel Espinheira
Engenheiro Full-Stack Sénior


































