ce.dev

Goiânia, Brasil · GMT-3 · disponível para projetos

Full stack developer que tira produto do papel e coloca em produção do schema do banco ao deploy. Next.js, TypeScript e PostgreSQL, com atenção real a design e experiência do usuário.

Meus dados atuais

Cargo atualAuxiliar Administrativo · ARX Administradora
Stack principalNext.js · JavaScript · PostgreSQL
FormaçãoCiência da Computação (cursando)
DiferencialVim resolver o seu problema.
TrajetóriaSuporte → Implantação → dev
Contatocontato.cseduardo@gmail.com
carlos@dev ~ zsh
$
VERCEL✦
NEXT.JS✦
TYPESCRIPT✦
REACT✦
JAVASCRIPT✦
POSTGRESQL✦
TAILWIND✦
LINUX✦
CAFÉ✦
NODE.JS✦
DOCKER✦
VERCEL✦
NEXT.JS✦
TYPESCRIPT✦
REACT✦
JAVASCRIPT✦
POSTGRESQL✦
TAILWIND✦
LINUX✦
CAFÉ✦
NODE.JS✦
DOCKER✦
VERCEL✦
NEXT.JS✦
TYPESCRIPT✦
REACT✦
JAVASCRIPT✦
POSTGRESQL✦
TAILWIND✦
LINUX✦
CAFÉ✦
NODE.JS✦
DOCKER✦
Projetos

Não é lista de tutorial. É produto com decisão técnica.

Cada projeto abaixo passou por problema real, escolha de arquitetura, bug difícil e refatoração honesta. O formato é o mesmo que uso no trabalho: contexto, desafio, decisão, resultado.

PWA · App para casaisPega Aí
ver em produção

PWA mobile-first para casais organizarem a rotina juntos: listas compartilhadas, calendário com eventos recorrentes, atribuição de tarefas por pessoa e notificações push. Em produção e com uso diário real.

notify.mjs
// serviço standalone de push (cron)
const inscritos = await db
  .collection("pushSubscriptions")
  .get();

for (const doc of inscritos.docs) {
  await webpush.sendNotification(
    doc.data().subscription,
    JSON.stringify({ title, body })
  );
}
Desafio

Sincronização em tempo real entre dois usuários, push notifications em PWA (incluindo as limitações do iOS) e custo de infraestrutura zero.

Decisão

Migração completa de Supabase para Firebase (Firestore + Auth) e um serviço Node.js standalone de push com web-push + firebase-admin acionado por cron.

Resultado

App instalável, realtime estável e notificações agendadas funcionando sem servidor pago. Zero downtime desde a migração.

Next.jsTypeScriptFirebaseFirestoreService Workerweb-push
Sistema de GamificaçãoAwait
ver no github

SaaS multitenant de gamificação corporativa: metas diárias por colaborador, roleta de moedas, marketplace de pontos e leaderboard. Várias empresas na mesma base, com isolamento total de dados entre elas.

metas.service.ts
// toda query nasce presa ao tenant
export async function listarMetas(
  tenantId: string
) {
  return db
    .select()
    .from(metasDiarias)
    .where(eq(metasDiarias.tenantId, tenantId))
    .orderBy(desc(metasDiarias.criadaEm));
}
Desafio

Multitenancy seguro (um tenant jamais pode ver dados de outro) e atualizações em tempo real no leaderboard sem estourar custo.

Decisão

Reescrever a v2 do zero com Drizzle, garantindo o isolamento na camada de dados antes de qualquer UI. Realtime com SSE + Redis pub/sub em vez de WebSocket, e Server Actions com validação Zod.

Resultado

Arquitetura mais simples que a v1, com um documento de handoff registrando cada decisão — saber quando recomeçar também é engenharia.

Next.jsDrizzlePostgreSQLRedisSSEZod
Automação · Go + PlaywrightAutomação de ERP em Go

Automação em Go + Playwright para ERP de gestão:lê planilhas .xlsx com centenas de registros de cotas de veículos e atualiza os valores no sistema um a um, com validação antes de cada salvamento. O que tomava horas de trabalho manual agora roda sozinho.

kpis.ts
// cross-check antes de salvar
  valorTela, _ := page.Locator("#valorCota").InputValue()
if normalizar(valorTela) != normalizar(valorPlanilha) {
    log.Printf("divergência na cota %s — abortando", id)
    continue
}
Desafio

Entender como o ERP renderizava os dados por trás (DataTables carregando via AJAX, timing imprevisível) e garantir que a automação jamais salvasse valor errado — erro monetário em produção não tem Ctrl+Z.

Decisão

Go com Playwright para automação de browser, parsing do .xlsx com validação de formato monetário e um cross-check obrigatório: antes de salvar, o script relê o valor na tela e compara com a planilha. Divergiu, aborta e registra no log.

Resultado

Tarefa de horas virou processo automático e auditável. De quebra: bug de BOM na planilha resolvido e a lição de que automação de UI é 20% código e 80% esperar o AJAX certo.

GoPlaywrightxlsx
Integração · Next + DjangoSys Coin v1
ver no github

Módulo de gamificação em Next.js integrado a um ERP Django que eu não controlava — cenário comum em empresa: seu código precisa conviver com o sistema legado de outra equipe.

api.ts
// identidade vem SEMPRE do Django
export async function apiDjango(
  rota: string, token: string
) {
  const res = await fetch(BASE + rota, {
    headers: {
      Authorization: "Bearer " + token,
    },
  });
  if (res.status === 401) renovarToken();
  return res.json();
}
Desafio

Compartilhar autenticação e permissões com um backend Django de terceiro, sem duplicar usuários nem regras de acesso.

Decisão

Consumir a API REST (Django REST Framework) com auth unificada via JWT, e containerizar tudo com Docker para o deploy ser reproduzível.

Resultado

Gestão de departamentos com filtros e estatísticas — e uma lição prática de case-sensitivity do filesystem Linux que só o deploy ensina.

Next.jsDjango RESTJWTDockerLinux
Skills

Stack

O que uso em produção hoje.

Front-End
TypeScriptprodução
React / Next.jsprodução
Tailwind CSSprodução
Canvas 2Destudando
PWA / Service Workersestudando
Back-end e dados
PostgreSQLprodução
Prisma / Drizzleestudando
Firebase / Firestoreestudando
Node.jsprodução
REST / integração DRFestudando
Infra e ferramentas
Dockerprodução
Linux (Debian)produção
Vercelprodução
Redisestudando
Git / GitHubprodução
Conheça me

Sobre mim

Do chamado de suporte ao deploy em produção Sou o Carlos, Cadu pros íntimos desenvolvedor full stack em Goiânia. Entrei em tecnologia pela porta do suporte: atendendo chamado em rede de supermercado, aprendendo na marra a traduzir "o sistema não funciona" em problema técnico de verdade. Isso mudou como eu programo até hoje: antes de escrever qualquer linha, quero entender quem vai usar e onde dói. Na ARX entrei pra implantar sistemas e virei dev por iniciativa própria comecei automatizando uma tarefa que tomava horas do time, e a automação virou função. Hoje construo produto de ponta a ponta com Next.js, TypeScript e PostgreSQL, e mantenho apps em produção com usuários reais, do tipo que reclama na hora quando algo quebra. Fora do código, sou o cara que desmonta as coisas pra entender: eletrônica, robótica, carrinho RC de drift. O padrão é sempre o mesmo aprendo fazendo, quebro, conserto, documento. Júnior no crachá, mentalidade de dono do problema.

Experiência

De suporte a desenvolvimento

Entrei em tecnologia resolvendo chamado de suporte aquele tipo de trabalho que te ensina a ouvir o problema real do usuário antes de qualquer linha de código. Foi ali que decidi migrar pra desenvolvimento, e hoje isso pesa a favor: enxergo o sistema pelos dois lados, de quem usa e de quem constrói.

Formação
Ciência da Computação (cursando)
Descomplica Faculdade Digital
Desenvolva aplicações web Acessíveis 3 cursos
Alura
DB Developer160 Horas
Descomplica
Arquitetura e Organização de computadores240 Horas
Descomplica
The Origins III: JavaScript16h
Codédex
Formação A partir do zero: iniciante em programação4 Cursos
Alura
HTML e CSS5 Cursos
Alura
WordPress: crie sites do zero17 Horas
Alura
Pratique HTML e CSS em projetos Web4 Cursos
Alura
Cursos de Back-end (Go e JavaScript)124 Horas
Alura
Cursos de Front-End110 Horas
Alura
Curso: Colorização digital8 Horas
Alura
SEO: Otimização de sites8 Horas
Alura
Contato

Procurando alguém que aprende rápido e entrega de verdade?

Respondo rápido, converso sem enrolação e chego na entrevista com código em produção pra mostrar não só slides.

ou direto: contato.cseduardo@gmail.com