{"meta":{"title":"Perk: Takeover de Legacy e Estabilização | Bleu","description":"Assumir codebase terceirizado sem CI nem testes, e modernizar incrementalmente enquanto entrega produto."},"hero":{"tagline":"De codebase terceirizado a production-grade em 90 dias — sem parar de entregar.","summary":"Perk herdou um monolito Rails terceirizado no GitLab. Sem CI. Sem PR reviews. Sem testes rodando. A Bleu assumiu, reconstruiu o processo de engenharia e entregou produto ao mesmo tempo."},"context":{"title":"Contexto","description":"O codebase da Perk tinha sido construído por um time terceirizado na Índia e entregue. O time foi embora. Não tinha integração contínua, não tinha code review, não tinha suite de testes rodando. Pushavam direto pras branches e mergeavam sem revisão. Deploys eram manuais.\n\nA pergunta não era se devia arrumar — era se um time novo conseguia assumir o sistema de produção de outra pessoa, entender profundamente, e modernizar sem quebrar o que já funcionava.","constraints":["Sem pipeline de CI — código ia pra produção sem checks automáticos","Sem PR reviews — merges diretos sem supervisão","Sem suite de testes rodando — sem rede de segurança pra mudanças","Deploys manuais — cada release um processo manual e sujeito a erro","Time anterior foi embora — sem knowledge transfer, sem documentação"]},"ourRole":{"title":"Nosso papel","description":"Em vez de só corrigir bugs em cima do setup existente, reconstruímos o processo de engenharia enquanto entregávamos produto. As duas coisas aconteceram ao mesmo tempo — estabilização não foi separada de entrega.","quote":{"text":"O que você queria que o time anterior fosse.","author":"Taylor","role":"Perk"}},"whatChanged":{"title":"O que mudou","summary":"Em 90 dias, o codebase saiu de não-governado pra profissionalmente gerenciado. Cada mudança passava por CI, era revisada, e era deployed automaticamente. E produto continuou sendo entregue o tempo todo.","outcomes":["Migração do GitLab pro GitHub com branch protection e reviews obrigatórios","Pipeline de CI rodando em cada push — testes, lints, builds","Containerizado com Docker pra ambientes consistentes","Background job processing introduzido (Sidekiq)","TailwindCSS integrado pra consistência no frontend","Linear pra tracking de projeto (864 tickets até hoje)","Entregamos social feed challenges, fixes de email, e fixes de auth admin simultaneamente"]},"areasOfOwnership":{"title":"Áreas que assumimos","categories":[{"title":"Processo de Engenharia","summary":"Reconstruímos o workflow de desenvolvimento do zero.","items":[{"title":"Controle de Versão & Code Review","description":"Migração do GitLab pro GitHub. Branch protection rules, PR reviews obrigatórios, e workflow de merge que garante que cada mudança é revisada antes de ir pra produção."},{"title":"Integração Contínua","description":"Pipeline de CI construída do zero. Testes, lints e builds rodam em cada push. Nenhum código chega em produção sem passar por checks automáticos."},{"title":"Containerização","description":"Aplicação containerizada com Docker, eliminando inconsistências de ambiente e estabelecendo builds repetíveis do desenvolvimento até produção."}]},{"title":"Modernização de Infraestrutura","summary":"Processos manuais substituídos por sistemas automatizados e repetíveis.","items":[{"title":"Deploys Automatizados","description":"Deploys manuais substituídos por pipelines automatizadas. Cada merge na `main` dispara build, teste e deploy sem intervenção humana."},{"title":"Processamento em Background","description":"Sidekiq introduzido pra processamento de jobs em background, tirando envio de email, processamento de mídia e sync de dados do ciclo de request."}]},{"title":"Entrega de Produto","summary":"Features entregues enquanto modernizava — não depois.","items":[{"title":"Social Feed Challenges","description":"Mecânicas de desafio de social feed construídas enquanto o overhaul de engenharia acontecia. Usuários podiam postar, compartilhar e ganhar recompensas."},{"title":"Fixes de Email & Mídia","description":"Confiabilidade de envio de email e links de mídia S3 corrigidos. Fluxos de autenticação estabilizados em toda a plataforma."}]}]},"whyItWorks":{"title":"Por que isso importa","description":"A maioria dos times não encosta no sistema legado de outra pessoa. Os que encostam geralmente propõem reescrever do zero — meses de trabalho antes de entregar qualquer valor.\n\nModernizamos incrementalmente: entregamos produto no dia um enquanto reconstruíamos a fundação por baixo. Nenhum dia de downtime durante a transição. Três anos depois, aquele codebase é um monorepo de 16 apps servindo clientes Fortune 500 com 99.984% de uptime."},"outcome":{"title":"Resultado","description":"A estabilização construiu a fundação pra tudo que veio depois. O pipeline de CI, PR reviews e deploys automatizados que colocamos nos primeiros 90 dias ainda estão rodando três anos depois — agora processando 12.000+ commits em 1.600+ pull requests. O que começou como resgate virou parceria."},"cta":{"description":"Se você tem um codebase que tem medo de mexer ou uma transição de time pra navegar, esse é o tipo de trabalho que fazemos.","links":[{"text":"Ver o case completo da Perk","href":"/perk"},{"text":"Traga o problema","href":"/contact"}]}}