Senior Fullstack Drupal Developer
Headless Drupal | Backend Focus | React | Conversational EnglishSobre a oportunidadeBuscamos um(a) Desenvolvedor(a) Fullstack Drupal Sênior para atuar no desenvolvimento e evolução de soluções digitais construídas em uma arquitetura Headless Drupal. Nesse modelo, o Drupal será utilizado prioritariamente como plataforma de gestão de conteúdo, regras de negócio, persistência de dados e disponibilização de serviços por meio de APIs, enquanto a experiência digital será implementada em uma aplicação frontend desacoplada, preferencialmente utilizando React. Embora a avaliação técnica tenha maior profundidade na camada backend, o profissional deverá possuir capacidade efetiva de atuação fullstack, compreendendo e implementando a integração completa entre Drupal, APIs e aplicações frontend.O profissional ideal deverá combinar profundidade técnica, visão de arquitetura, autonomia, curiosidade, capacidade investigativa e inglês conversacional para atuação em um ambiente internacional.Contexto de arquiteturaA solução utiliza uma abordagem Headless Drupal, na qual:
- O Drupal atua como CMS, camada de dados, gestão de conteúdo e backend da solução;
- As regras de negócio são implementadas em módulos e serviços customizados;
- O conteúdo e as funcionalidades são disponibilizados por APIs;
- A experiência do usuário é desenvolvida em uma aplicação frontend desacoplada;
- React é a principal referência tecnológica para a camada frontend;
- Backend e frontend possuem ciclos de desenvolvimento e implantação independentes;
- A integração entre as camadas deve ser segura, performática, observável e escalável.
O profissional deverá compreender os impactos dessa arquitetura em autenticação, autorização, cache, segurança, modelagem de conteúdo, versionamento de APIs, performance e experiência do usuário.Principais responsabilidadesResponsabilidades gerais
- Desenvolver, evoluir e sustentar soluções digitais baseadas em Headless Drupal;
- Atuar de ponta a ponta na implementação de funcionalidades entre backend e frontend;
- Participar de refinamentos técnicos, definições de arquitetura e estimativas;
- Transformar requisitos funcionais em soluções técnicas escaláveis e sustentáveis;
- Garantir qualidade, segurança, performance e manutenibilidade do código;
- Investigar falhas e realizar análise de causa-raiz;
- Documentar APIs, componentes, configurações e decisões técnicas;
- Participar de reuniões técnicas em português e inglês;
- Trabalhar de forma colaborativa com arquitetura, produto, qualidade, infraestrutura e demais desenvolvedores.
Expectativas para BackendA atuação backend será concentrada na utilização do Drupal como plataforma desacoplada e fornecedora de serviços.Desenvolvimento Drupal
- Desenvolver módulos customizados seguindo as melhores práticas do Drupal;
- Implementar entidades customizadas, evitando o uso inadequado de Nodes;
- Criar campos, relacionamentos, estruturas de dados e regras de validação;
- Desenvolver serviços utilizando o sistema de injeção de dependências do Drupal;
- Utilizar corretamente Events, Subscribers, Plugins, Services e Hooks;
- Implementar formulários e interfaces administrativas para gestão da solução;
- Configurar permissões, roles e controles de acesso;
- Desenvolver rotinas administrativas, comandos e processos automatizados;
- Aplicar padrões de desenvolvimento orientado a objetos em PHP.
Desenvolvimento de APIs
- Projetar e implementar APIs REST customizadas;
- Desenvolver manualmente a lógica central dos endpoints, sem dependência exclusiva do JSON:API;
- Criar endpoints para consulta, criação, atualização e processamento de dados;
- Implementar validação de payloads e tratamento consistente de erros;
- Definir contratos de API claros e documentados;
- Aplicar versionamento de APIs;
- Implementar paginação, filtros, ordenação e critérios de pesquisa;
- Garantir retrocompatibilidade quando necessário;
- Criar collections do Postman para documentação e testes;
- Documentar endpoints utilizando OpenAPI ou Swagger, quando aplicável.
Segurança
- Implementar autenticação e autorização entre frontend e backend;
- Trabalhar com padrões como OAuth 2.0, JWT ou mecanismos equivalentes;
- Implementar controle de acesso por usuário, perfil e operação;
- Garantir proteção contra acessos indevidos e manipulação de dados;
- Aplicar validação e sanitização de entradas;
- Proteger a aplicação contra vulnerabilidades comuns;
- Configurar adequadamente CORS, headers de segurança e políticas de origem;
- Garantir que dados sensíveis não sejam indevidamente expostos pelas APIs;
- Aplicar as recomendações de segurança do ecossistema Drupal.
Performance e escalabilidade
- Projetar soluções preparadas para alto volume de requisições;
- Garantir integridade em operações concorrentes;
- Evitar duplicidade de registros e condições de corrida;
- Utilizar transações de banco de dados quando necessário;
- Otimizar consultas e acesso ao banco de dados;
- Implementar estratégias de cache do Drupal;
- Trabalhar com Cache API, Cache Tags, Cache Contexts e Cache Max-Age;
- Avaliar a utilização de filas e processamento assíncrono;
- Reduzir carga desnecessária sobre o Drupal;
- Analisar gargalos e propor melhorias de performance.
Observabilidade e operação
- Implementar logs estruturados;
- Criar mecanismos para rastreamento de requisições;
- Apoiar a definição de métricas e alertas;
- Facilitar a identificação de erros entre frontend, API e backend;
- Implementar tratamento consistente de exceções;
- Utilizar correlation IDs ou mecanismos equivalentes;
- Apoiar o diagnóstico de falhas em ambientes integrados;
- Monitorar disponibilidade, latência e taxa de erros das APIs.
Qualidade backend
- Escrever código claro, modular e testável;
- Aplicar princípios SOLID, Clean Code e separação de responsabilidades;
- Criar testes unitários, funcionais e de integração;
- Utilizar PHPUnit e ferramentas relacionadas;
- Participar de code reviews;
- Garantir aderência aos padrões de desenvolvimento do Drupal;
- Utilizar ferramentas de análise estática e qualidade de código;
- Manter documentação mínima da solução e dos fluxos técnicos.
Expectativas para FrontendA camada frontend será responsável por consumir as APIs do Drupal e entregar a experiência digital ao usuário.Desenvolvimento com React
- Desenvolver aplicações utilizando React;
- Criar componentes reutilizáveis e desacoplados;
- Trabalhar com componentes funcionais e React Hooks;
- Gerenciar estado local e compartilhado da aplicação;
- Implementar navegação e roteamento;
- Consumir APIs REST;
- Tratar estados de carregamento, sucesso, ausência de dados e erro;
- Implementar formulários e validações;
- Integrar componentes frontend aos contratos de API;
- Criar experiências responsivas para diferentes resoluções;
- Manter organização, legibilidade e reutilização do código.
Integração com Headless Drupal
- Consumir conteúdos e dados fornecidos pelo Drupal;
- Interpretar corretamente os modelos de conteúdo disponibilizados pelas APIs;
- Implementar autenticação e manutenção de sessão;
- Trabalhar com tokens de acesso e renovação de credenciais;
- Implementar tratamento de permissões no frontend;
- Trabalhar com URLs, slugs, aliases e metadados fornecidos pelo CMS;
- Garantir tratamento adequado de conteúdo estruturado;
- Implementar renderização segura de conteúdos ricos;
- Alinhar alterações de frontend com a evolução dos contratos de API;
- Identificar e diagnosticar problemas de integração entre React e Drupal.
Qualidade e experiência do usuário
- Desenvolver interfaces funcionais, intuitivas e acessíveis;
- Aplicar HTML semântico;
- Trabalhar com CSS, Sass, CSS Modules ou soluções equivalentes;
- Implementar layouts responsivos;
- Considerar requisitos básicos de acessibilidade;
- Utilizar corretamente atributos ARIA quando necessário;
- Garantir navegação adequada por teclado;
- Implementar feedbacks visuais para ações do usuário;
- Evitar comportamentos inconsistentes durante carregamentos e atualizações;
- Aplicar boas práticas de experiência do usuário, mesmo sem atuar como designer.
Performance frontend
- Evitar renderizações desnecessárias;
- Aplicar lazy loading e code splitting;
- Otimizar carregamento de componentes e recursos;
- Utilizar memoização quando tecnicamente justificável;
- Implementar estratégias adequadas de cache;
- Otimizar imagens e recursos estáticos;
- Acompanhar métricas de performance da aplicação;
- Considerar Core Web Vitals;
- Reduzir o impacto de chamadas excessivas às APIs;
- Implementar debounce, throttle ou paginação quando necessário.
Testes frontend
- Criar testes unitários para componentes;
- Criar testes de integração;
- Testar fluxos de interação do usuário;
- Utilizar ferramentas como Jest e React Testing Library;
- Utilizar Cypress, Playwright ou ferramenta equivalente para testes end-to-end;
- Criar mocks de APIs quando necessário;
- Validar comportamentos de erro, carregamento e indisponibilidade;
- Garantir que componentes críticos possam ser testados isoladamente.
Requisitos técnicos obrigatóriosBackend
- Experiência sólida com Drupal;
- Experiência com desenvolvimento de módulos customizados;
- Conhecimento avançado de PHP orientado a objetos;
- Conhecimento das APIs internas do Drupal;
- Experiência com entidades customizadas;
- Experiência com Services e Dependency Injection;
- Experiência com banco de dados relacional;
- Conhecimento de transações e integridade de dados;
- Experiência com APIs REST customizadas;
- Conhecimento de autenticação e autorização;
- Conhecimento de segurança de aplicações web;
- Conhecimento de cache e performance no Drupal;
- Experiência com Composer;
- Experiência com Git;
- Experiência com Lando, Docker ou ambiente equivalente;
- Experiência com Postman;
- Capacidade de criar documentação técnica.
Frontend
- Experiência prática com React;
- Conhecimento sólido de JavaScript moderno;
- Conhecimento de TypeScript;
- Experiência com React Hooks;
- Experiência com componentização;
- Experiência com consumo de APIs REST;
- Conhecimento de gerenciamento de estado;
- Conhecimento de HTML5 e CSS3;
- Experiência com design responsivo;
- Conhecimentos de acessibilidade;
- Experiência com testes de componentes;
- Capacidade de diagnosticar problemas de integração entre frontend e backend.
Arquitetura Headless
- Experiência ou conhecimento consistente em arquiteturas desacopladas;
- Compreensão da separação entre CMS e camada de experiência;
- Conhecimento sobre contratos de APIs;
- Compreensão de autenticação em aplicações desacopladas;
- Conhecimento de CORS;
- Conhecimento de cache distribuído;
- Capacidade de analisar impactos de alteração entre backend e frontend;
- Compreensão de observabilidade em arquiteturas distribuídas.
Idioma
- Inglês em nível conversacional;
- Capacidade de participar de reuniões técnicas;
- Capacidade de explicar uma solução ou decisão de arquitetura;
- Capacidade de discutir problemas, riscos e dependências;
- Capacidade de compreender documentação e requisitos técnicos em inglês.
Competências comportamentaisAutonomiaEspera-se que o profissional consiga:
- Compreender requisitos com baixa necessidade de supervisão;
- Estruturar um plano técnico de implementação;
- Investigar problemas antes de escalar;
- Identificar dependências e riscos;
- Tomar decisões fundamentadas;
- Comunicar impedimentos de maneira antecipada;
- Conduzir entregas até sua conclusão.
CuriosidadeEspera-se que o profissional demonstre:
- Interesse em compreender o problema além da implementação imediata;
- Capacidade de investigar como os componentes da arquitetura interagem;
- Disposição para analisar causas-raiz;
- Interesse em aprender novas tecnologias;
- Questionamento construtivo sobre decisões técnicas;
- Proatividade para propor melhorias.
Comunicação
- Explicar decisões técnicas com clareza;
- Adaptar a comunicação para públicos técnicos e não técnicos;
- Comunicar riscos e impactos;
- Participar ativamente de refinamentos;
- Registrar informações relevantes;
- Interagir em inglês com equipes internacionais.
Colaboração
- Trabalhar de forma integrada com backend, frontend, QA, DevOps e arquitetura;
- Participar de code reviews;
- Compartilhar conhecimento;
- Receber e fornecer feedback;
- Apoiar a resolução conjunta de problemas.
Senso de responsabilidade
- Comprometimento com qualidade e segurança;
- Responsabilidade pelos componentes desenvolvidos;
- Atenção aos impactos de produção;
- Cumprimento de acordos técnicos;
- Transparência sobre riscos, atrasos e dificuldades.
Diferenciais
- Experiência com Drupal 10 ou versões posteriores;
- Experiência com Next.js;
- Conhecimento de Server-Side Rendering;
- Conhecimento de Static Site Generation;
- Experiência com GraphQL;
- Experiência com JSON:API, mesmo que não seja utilizado como solução principal;
- Conhecimento de Redux Toolkit, Zustand ou Context API;
- Experiência com React Query ou TanStack Query;
- Conhecimento de Storybook;
- Experiência com Design Systems;
- Conhecimento de micro frontends;
- Experiência com CDN e cache de borda;
- Conhecimento de Redis ou Varnish;
- Experiência com filas e mensageria;
- Conhecimento de plataformas de nuvem;
- Experiência com CI/CD;
- Experiência com Docker;
- Conhecimento de Kubernetes;
- Experiência com ferramentas de observabilidade;
- Experiência em ambientes internacionais;
- Experiência em aplicações de alto tráfego