Desenvolvedor apaixonado por criar soluções que fazem a diferença. High level em JavaScript, PHP e Node.js, com experiência sólida em diversas outras linguagens, sempre evoluindo com novas tecnologias.

Com mais de 9 anos de experiência, já trabalhei em projetos que vão desde servidores de jogos online até aplicativos para android, SaaSs e sistemas internos de empresas. Acredito que o código limpo e bem documentado é a base de qualquer projeto de sucesso.

javascript (código exemplo)
class ParticleSystem {
  constructor(canvas) {
    this.canvas = canvas;
    this.ctx = canvas.getContext('2d');
    this.particles = [];
    this.mouse = { x: 0, y: 0 };
    this.init();
  }
  
  init() {
    this.createParticles();
    this.bindEvents();
    this.animate();
  }
  
  createParticles() {
    for (let i = 0; i < 50; i++) {
      this.particles.push({
        x: Math.random() * this.canvas.width,
        y: Math.random() * this.canvas.height,
        vx: (Math.random() - 0.5) * 2,
        vy: (Math.random() - 0.5) * 2,
        size: Math.random() * 3 + 1,
        color: this.getRandomColor()
      });
    }
  }
  
  getRandomColor() {
    const colors = ['#ff6b35', '#ff4757', '#ff3742'];
    return colors[Math.floor(Math.random() * colors.length)];
  }
  
  bindEvents() {
    this.canvas.addEventListener('mousemove', (e) => {
      const rect = this.canvas.getBoundingClientRect();
      this.mouse.x = e.clientX - rect.left;
      this.mouse.y = e.clientY - rect.top;
    });
  }
  
  animate() {
    this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
    
    this.particles.forEach(particle => {
      const dx = this.mouse.x - particle.x;
      const dy = this.mouse.y - particle.y;
      const distance = Math.sqrt(dx * dx + dy * dy);
      
      if (distance < 100) {
        const force = (100 - distance) / 100;
        particle.vx += dx * force * 0.01;
        particle.vy += dy * force * 0.01;
      }
      
      particle.x += particle.vx;
      particle.y += particle.vy;
      
      if (particle.x < 0 || particle.x > this.canvas.width) particle.vx *= -0.8;
      if (particle.y < 0 || particle.y > this.canvas.height) particle.vy *= -0.8;
      
      this.ctx.fillStyle = particle.color;
      this.ctx.beginPath();
      this.ctx.arc(particle.x, particle.y, particle.size, 0, Math.PI * 2);
      this.ctx.fill();
    });
    
    requestAnimationFrame(() => this.animate());
  }
}

const canvas = document.createElement('canvas');
canvas.width = 400;
canvas.height = 200;
document.body.appendChild(canvas);
new ParticleSystem(canvas);
class ParticleSystem {
  constructor(canvas) {
    this.canvas = canvas;
    this.ctx = canvas.getContext('2d');
    this.particles = [];
    this.mouse = { x: 0, y: 0 };
    this.init();
  }
  
  init() {
    this.createParticles();
    this.bindEvents();
    this.animate();
  }
  
  createParticles() {
    for (let i = 0; i < 50; i++) {
      this.particles.push({
        x: Math.random() * this.canvas.width,
        y: Math.random() * this.canvas.height,
        vx: (Math.random() - 0.5) * 2,
        vy: (Math.random() - 0.5) * 2,
        size: Math.random() * 3 + 1,
        color: this.getRandomColor()
      });
    }
  }
  
  getRandomColor() {
    const colors = ['#ff6b35', '#ff4757', '#ff3742'];
    return colors[Math.floor(Math.random() * colors.length)];
  }
  
  bindEvents() {
    this.canvas.addEventListener('mousemove', (e) => {
      const rect = this.canvas.getBoundingClientRect();
      this.mouse.x = e.clientX - rect.left;
      this.mouse.y = e.clientY - rect.top;
    });
  }
  
  animate() {
    this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
    
    this.particles.forEach(particle => {
      const dx = this.mouse.x - particle.x;
      const dy = this.mouse.y - particle.y;
      const distance = Math.sqrt(dx * dx + dy * dy);
      
      if (distance < 100) {
        const force = (100 - distance) / 100;
        particle.vx += dx * force * 0.01;
        particle.vy += dy * force * 0.01;
      }
      
      particle.x += particle.vx;
      particle.y += particle.vy;
      
      if (particle.x < 0 || particle.x > this.canvas.width) particle.vx *= -0.8;
      if (particle.y < 0 || particle.y > this.canvas.height) particle.vy *= -0.8;
      
      this.ctx.fillStyle = particle.color;
      this.ctx.beginPath();
      this.ctx.arc(particle.x, particle.y, particle.size, 0, Math.PI * 2);
      this.ctx.fill();
    });
    
    requestAnimationFrame(() => this.animate());
  }
}

const canvas = document.createElement('canvas');
canvas.width = 400;
canvas.height = 200;
document.body.appendChild(canvas);
new ParticleSystem(canvas);

Quando não estou codando, você pode me encontrar explorando novas tecnologias, contribuindo para projetos open source ou ouvindo música no Spotify enquanto penso na próxima feature incrível.

Tenho conhecimento avançado em segurança com Cloudflare, configuração de iptables e mitigação de DDoS. Experiência sólida em deploy e servidores Linux (Ubuntu/Debian), administração de VPS e servidores dedicados via terminal.

Domínio em Nginx e Apache, configuração de DNS e domínios, versionamento com GitHub e sistemas de resposta em tempo real. Experiência em administração completa de infraestrutura sem suporte gráfico.

Sobre Inteligência Artificial, não sou negacionista. Pelo contrário, utilizo como uma ferramenta estratégica para otimizar o tempo de desenvolvimento, tornando o processo mais prático e eficiente. Sempre com supervisão e utilizando as melhores ferramentas do mercado, investindo continuamente em conhecimento e tecnologias para melhor atender às necessidades dos projetos.

Tenho experiência sólida em arquitetura de sistemas, compreendendo perfeitamente a diferença entre monolitos e microserviços e sabendo exatamente quando aplicar cada abordagem. Sou um grande entusiasta de microserviços, acreditando na sua capacidade de escalar e manter sistemas complexos de forma eficiente. Além disso, possuo conhecimento prático em integração de APIs de pagamento, incluindo gateways como Asaas, Stripe e PagSeguro, com experiência em implementação de fluxos de pagamento seguros e confiáveis.

Vamos trabalhar juntos?

Estou sempre aberto a novos desafios e oportunidades interessantes.