SKILLS & TECNOLOGIAS

Frontend

React

React

Next.js

Next.js

TypeScript

TypeScript

JavaScript

JavaScript

React Native

React Native

Tailwind CSS

Tailwind CSS

Styled Components

Styled Components

Vue.js

Vue.js

Backend

Node.js

Node.js

Express

Express

NestJS

NestJS

Fastify

Fastify

REST API

Banco de Dados

PostgreSQL

PostgreSQL

MySQL

MySQL

MongoDB

MongoDB

Prisma

Prisma

Drizzle

Estado & Padrões

Redux

Redux

Zustand

Context API

Design System

Storybook

Storybook

Clean Architecture

SOLID

Cloud & BaaS

Supabase

Supabase

Firebase

Firebase

AWS

Vercel

Vercel

DevOps

Docker

Docker

CI/CD

Git

Git

GitHub

GitHub

GitLab

GitLab

Qualidade

Jest

Jest

SEO

SEO

Design & Processo

Figma

Figma

UI/UX

Scrum

Kanban

IA & Tooling

Não é só usar ferramentas de IA — é usá-las com critério: direção clara, revisão de tudo e julgamento de arquitetura sempre humano. A IA acelera a execução; o controle do que vai pro produto continua meu.

Claude Code

Claude Code

Codex

Gemini

Gemini

MCP Agents

Trade-offs & decisões

Algumas escolhas técnicas e o raciocínio por trás delas — onde estava o trade-off e por que decidi assim.

Drizzle vs Prisma

Uso os dois conforme o caso. Drizzle quando quero SQL-first, type-safe e leve, com migrations programáticas (EGP IoT). Prisma quando schema declarativo e DX pesam mais que o controle fino do SQL (MTCprop). Trade-off: Drizzle pede mais SQL na mão; Prisma adiciona abstração e peso ao bundle.

MySQL (ACID) vs NoSQL/BASE — ArqDoor

A ArqDoor envolve contratos, questões jurídicas e pagamentos — o domínio exige integridade forte. Optei por um relacional ACID (MySQL): atomicidade e consistência garantem que propostas, contratos e transações nunca fiquem em estado parcial. Um modelo BASE (consistência eventual) arriscaria a imutabilidade e a atomicidade que a plataforma precisa — não era o ajuste certo aqui.