6A6D: Senior Fullstack Drupal Developer
Summary
This role is for a Senior Fullstack Developer to build and maintain digital solutions using a Headless Drupal backend and a decoupled React frontend. The position requires strong expertise in both Drupal backend development and React frontend integration, along with advanced English skills for international collaboration.
Senior Fullstack Drupal Developer
Headless Drupal | Backend Focus | React | Conversational English
Sobre a oportunidade
Buscamos 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 arquitetura
A 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 responsabilidades
Responsabilidades 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 Backend
A 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 Frontend
A 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órios
Backend
- 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 comportamentais
Autonomia
Espera-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.
Curiosidade
Espera-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