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