Descrição
**Senior Fullstack Drupal Developer \-** **Headless Drupal \| Backend Focus \| React \| Conversational English**
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