---
title: "MVP Digital para Laboratório Farmacêutico - Do Zero à Produção"
slug: "pharma-digital-transformation"
summary: "Liderança de squad em projeto greenfield para laboratório farmacêutico, construindo MVP de plataforma digital com integrações complexas (Salesforce, Twilio, APIs oficiais) partindo do zero absoluto - sem Git, sem servidores, sem infraestrutura."
client: "Laboratório Farmacêutico"
industry: "Farmacêutica & Saúde"
timeline: "4 meses (2 meses de atraso planejado)"
role: "Tech Lead & Solution Architect"
image: ""
tags:
  - MVP
  - Digital Transformation
  - .NET
  - React
  - Next.js
  - Salesforce
  - Twilio
  - SQL Server
  - Tech Lead
  - Greenfield
featured: true
order: 3
date: 2023-03-01
seo_title: "MVP Digital Farmacêutico - Transformação Digital do Zero"
seo_description: "Case de construção de MVP digital para laboratório farmacêutico partindo do zero: sem Git, sem infraestrutura, com integrações complexas e entrega bem-sucedida."
seo_keywords: "MVP, digital transformation, pharma, .NET, React, Next.js, Salesforce, greenfield project, tech lead"
---

## Overview

Laboratório farmacêutico no **início da transformação digital** contrata consultoria para construir plataforma de descontos para médicos prescritores, partindo de protótipo em WordPress.

**Desafio único:** Começar projeto greenfield em empresa **sem infraestrutura básica** de desenvolvimento - sem Git, sem servidores provisionados, sem processos definidos.

**Contexto:** Projeto executado em ambiente de múltiplas squads. **Entrega bem-sucedida em produção** apesar dos desafios iniciais de infraestrutura, com atraso controlado de 2 meses.

---

## Challenge

### Transformação Digital... Partindo do Zero Absoluto

**Estado inicial da empresa (2023):**

❌ **Sem Git/versionamento**
- Código apenas em máquinas locais
- Histórico inexistente
- Colaboração impossível

❌ **Sem servidores provisionados**
- Ambiente de desenvolvimento inexistente
- Homologação não configurada
- Produção não preparada

❌ **Sem processos de desenvolvimento**
- Sem CI/CD
- Sem code review
- Sem gestão de tarefas estruturada

❌ **Sem equipe técnica interna experiente**
- Time sem familiaridade com stacks modernas
- Primeiro contato com React, APIs REST
- Inexperiência com integrações complexas

**Ponto de partida técnico:**
- Protótipo funcional em **WordPress**
- Conteúdo e textos já aprovados
- UX/UI definido
- Regras de negócio documentadas (parcialmente)

---

### Integrações Complexas Requeridas

O MVP precisava integrar com múltiplos sistemas externos:

1. 🔐 **Salesforce** - Registro de pedidos de desconto
2. 📱 **Twilio** - SMS para validação de login (2FA)
3. 🏥 **API oficial de médicos** - Validação de CRM + dados profissionais
4. 🎯 **Interplayers** - Envio de registros de desconto por CPF
5. 📄 **WordPress** - Leitura de conteúdo (CMS headless)
6. 💾 **SQL Server** - Persistência de dados

**Complexidade adicional:**
- Diferentes credenciais/ambientes por integração
- SLAs variados (Twilio crítico, WordPress tolerante)
- Tratamento de erros específico por provider
- Compliance LGPD (dados sensíveis de médicos)

---

## Solution Architecture

### Estratégia: Start Small, Build Solid

**Decisão inicial:** Explicar ao time o processo que iríamos seguir, estabelecendo fundações antes de codificar.

### Fase 1: Setup de Infraestrutura Básica (Semanas 1-2)

Mesmo sem servidores provisionados, iniciei setup essencial:

**Git & Versionamento:**
```bash
# Repositório estruturado desde dia 1
git init
git flow init  # Branch strategy definida

# Estrutura de monorepo
/
├── frontend/      # Next.js + React
├── backend/       # .NET APIs
├── cms-adapter/   # WordPress integration
└── docs/          # Arquitetura e ADRs
```

**Processo explicado ao time:**
1. ✅ Tudo no Git (commits atômicos, mensagens descritivas)
2. ✅ Feature branches (nunca commit direto em main)
3. ✅ Code review obrigatório (2 aprovações)
4. ✅ CI/CD preparado (para quando servidores estiverem prontos)

**Ambientes locais primeiro:**
- Docker Compose para desenvolvimento local
- Mock de APIs externas (até credenciais chegarem)
- SQL Server local com seeds de dados

---

### Fase 2: Arquitetura Moderna & Desacoplada

```
┌─────────────────────────────────────────────────────┐
│  FRONTEND (Next.js + React)                         │
│  - SSR para SEO                                     │
│  - Client-side para interatividade                  │
│  - Consumo de APIs                                  │
└────────────┬────────────────────────────────────────┘
             │
             ▼
┌─────────────────────────────────────────────────────┐
│  BACKEND APIs (.NET 7)                              │
│  - REST APIs                                        │
│  - Authentication/Authorization                     │
│  - Business logic                                   │
│  - Orchestration layer                              │
└────┬────┬────┬────┬────┬─────────────────────────┬──┘
     │    │    │    │    │                         │
     ▼    ▼    ▼    ▼    ▼                         ▼
┌────────┐ ┌──────┐ ┌──────┐ ┌────────┐ ┌────────┐ ┌──────────┐
│Salesf. │ │Twilio│ │CRM   │ │Interpl.│ │WordPr. │ │SQL Server│
│        │ │      │ │API   │ │        │ │(CMS)   │ │          │
└────────┘ └──────┘ └──────┘ └────────┘ └────────┘ └──────────┘
```

**Stack escolhido:**

**Frontend:**
- `Next.js 13` - SSR, routing, otimizações
- `React 18` - Componentes, hooks, context
- `TypeScript` - Type safety
- `Tailwind CSS` - Styling moderno

**Backend:**
- `.NET 7` - APIs REST
- `Entity Framework Core` - ORM
- `SQL Server 2019` - Banco de dados
- `Polly` - Resilience patterns (retry, circuit breaker)

**Por que Next.js em vez de manter WordPress?**
- ✅ Performance (SSR vs PHP monolítico)
- ✅ SEO otimizado (critical para farmacêutica)
- ✅ Experiência moderna (SPA quando necessário)
- ✅ Escalabilidade
- ✅ WordPress mantido apenas como CMS (headless)

---

### Fase 3: Integrações (Core do Projeto)

#### 1. Salesforce - Campanhas e Registro de Pedidos

**Solução implementada:**

O Salesforce foi configurado para gerenciar duas funcionalidades principais:

**a) Campanhas de desconto:**
- Marketing configura campanhas no Salesforce (medicamento X, desconto Y%, período)
- Backend consulta campanhas ativas via API
- Frontend (Next.js) exibe percentual de desconto disponível baseado em: medicamento + campanha ativa

**b) Registro de pedidos:**
- Usuário informa: CRM do médico, UF, CPF do paciente, medicamento
- Sistema valida dados (CRM real via API oficial, CPF válido)
- Percentual é calculado automaticamente (campanhas do Salesforce + regras do CMS)
- Pedido é registrado no Salesforce com todos os dados (compliance LGPD)

**Desafios técnicos superados:**
- Autenticação OAuth2 com refresh token automático
- Rate limiting (Salesforce tem limites de API/dia)
- Retry logic para falhas transitórias (Polly)
- Mascaramento de CPF para logs (LGPD)

---

#### 2. Twilio - Autenticação por SMS (2FA)

**Solução implementada:**

Sistema de autenticação de dois fatores para garantir segurança:

**Fluxo de login:**
1. Usuário informa telefone
2. Backend gera código de 6 dígitos (válido por 5 minutos)
3. SMS enviado via Twilio ("Seu código: 123456")
4. Usuário digita código no frontend
5. Backend valida código + timestamp de expiração
6. Token JWT emitido após validação bem-sucedida

**Compliance e auditoria:**
- Telefones mascarados nos logs (LGPD)
- Auditoria completa (quem, quando, qual SMS)
- Taxa de entrega: 99.8%

---

#### 3. API Oficial de Médicos (Conselho Regional de Medicina)

**Solução implementada:**

Validação automática de médicos via API oficial dos conselhos de medicina:

**Validações realizadas:**
- CRM existe e está ativo no conselho
- Nome do médico corresponde ao CRM informado
- Especialidade é permitida (regra de negócio do laboratório)
- UF corresponde ao estado de registro

**Otimizações:**
- Cache de 24 horas para reduzir chamadas à API oficial
- Fallback em caso de API fora do ar (notifica admin)
- Retry automático para falhas transitórias

**Por que isso importa:**
Garante que apenas médicos reais e ativos possam prescrever descontos, evitando fraudes.

---

#### 4. WordPress como CMS Headless

**Solução implementada:**

Marketing continua gerenciando conteúdo no WordPress (familiar), mas frontend é Next.js moderno.

**Arquitetura:**
- WordPress: Gerencia textos, imagens, regras de campanhas
- WordPress REST API: Expõe conteúdo via JSON
- Next.js: Consome API e renderiza com SSR (SEO otimizado)

**Benefícios:**
- ✅ Marketing não precisa aprender nova ferramenta
- ✅ Frontend moderno (performance, UX)
- ✅ SEO otimizado (Server-Side Rendering)
- ✅ Separação clara de responsabilidades (conteúdo vs código)

---

### Fase 4: Resiliência & Error Handling

Com múltiplas integrações externas, falhas são inevitáveis. A solução foi implementar **padrões de resiliência** usando biblioteca Polly (.NET):

**Padrões implementados:**

**1. Retry (Tentar novamente)**
- Se Salesforce/Twilio/CRM API falham, sistema tenta automaticamente 2-3x
- Espera cresce exponencialmente (1s, 2s, 4s) para evitar sobrecarga
- Apenas erros transitórios (timeout, 503) são retentados

**2. Circuit Breaker (Disjuntor)**
- Se serviço falha 5x seguidas, "abre o circuito" por 30s
- Durante 30s, não tenta mais (evita desperdiçar recursos)
- Após 30s, tenta novamente (pode ter voltado)

**3. Timeout**
- Cada integração tem tempo máximo de resposta
- Evita requisições travadas indefinidamente

**4. Fallback (Plano B)**
- Salesforce fora: Pedido vai para fila, processa depois
- Twilio fora: Alerta administrador via email
- CRM API fora: Usa cache (dados de 24h atrás)
- WordPress fora: Exibe conteúdo estático pré-carregado

**Estratégias por integração:**

| Integração | Retry | Circuit Breaker | Timeout | Plano B |
|----------|-------|-----------------|---------|----------|
| Salesforce | 3x (exponencial) | 5 falhas/30s | 10s | Fila de retry |
| Twilio | 2x (linear) | 3 falhas/60s | 5s | Alerta admin |
| CRM API | 3x (exponencial) | Não | 15s | Cache |
| WordPress | Não | Não | 3s | Conteúdo estático |

**Resultado em produção:**
- Salesforce teve manutenção (1h) → Sistema continuou funcionando (fila processou depois)
- Twilio teve instabilidade → Retry automático resolveu 95% dos casos
- Zero downtime percebido pelos usuários

---

## Overcoming Infrastructure Challenges

### Problema: Servidores Não Provisionados

**Solução temporária:**
1. Desenvolvimento 100% local (Docker Compose)
2. Mocks de serviços externos (quando credenciais atrasaram)
3. CI/CD preparado mas não ativo (aguardando infra)

**Quando servidores chegaram (semana 6):**
- Deploy em 2 horas (já estava preparado)
- Zero surpresas (tudo testado localmente)
- Rollout suave

---

### Problema: Credenciais de Integração Atrasadas

**Impacto:** Twilio e Salesforce demoraram 3 semanas para serem provisionadas.

**Solução:** Criar versões "mock" (simuladas) de cada integração:
- Mock do Twilio: Registra no log em vez de enviar SMS real
- Mock do Salesforce: Salva pedido em arquivo JSON local
- Mock da CRM API: Retorna dados fictícios de médicos

**Como funciona:**
- Ambiente de desenvolvimento: Usa mocks (não precisa de credenciais)
- Ambiente de produção: Usa integrações reais (quando credenciais chegarem)
- Troca automática baseada em configuração

**Resultado:** Time continuou 100% produtivo durante 3 semanas, testando fluxos completos sem depender de credenciais.

---

### Problema: Time Inexperiente com Stack Moderno

**Contexto:** Equipe não tinha experiência com React, TypeScript, .NET Core moderno, APIs REST.

**Abordagem de capacitação:**

**1. Pair Programming (1h/dia por desenvolvedor)**
- Tech lead trabalha ao lado do dev
- Compartilhamento de tela + explicação em tempo real
- Dev escreve código, tech lead guia

**2. Code Review Educativo**
- Não apenas "aprovar" ou "reprovar"
- Comentários explicam o **porquê** de cada sugestão
- Exemplo: "Sempre trate erros de requisições! Se API cair, usuário precisa saber o que aconteceu."

**3. Documentação Viva**
- ADRs (Architecture Decision Records): Por que escolhemos X e não Y?
- READMEs: Como rodar, como testar, como deployar
- Onboarding guide: Do zero à primeira feature

**4. Live Coding Semanal (2h)**
- Tech lead resolve problema real ao vivo
- Time observa processo de pensamento
- Q&A ao final

**Resultado:**
- Após 4 semanas, time estava autônomo
- Qualidade de código aumentou consistentemente
- Devs passaram a fazer code review entre si (peer review)

---

## Results & Impact

### Entrega Bem-Sucedida Apesar dos Desafios

**Contexto:** Programa com múltiplas squads trabalhando em paralelo.

**Resultado alcançado:**
- ✅ **MVP entregue em produção com sucesso**
- ✅ Atraso controlado de 2 meses (significativamente menor que outras iniciativas do programa)
- ✅ Todas as integrações funcionando conforme planejado
- ✅ Zero critical bugs em produção (primeira semana)

**Por que a entrega foi bem-sucedida?**

1. **Setup antecipado** - Git, processos, Docker local desde dia 1
2. **Mocks estratégicos** - Time não ficou bloqueado esperando infra
3. **Arquitetura sólida** - Resiliência desde o início
4. **Upskilling contínuo** - Time aprendeu fazendo
5. **Comunicação proativa** - Riscos reportados cedo

---

### Métricas do MVP

**Performance:**
- ⚡ Tempo de carregamento: <2s (95th percentile)
- 📱 Lighthouse score: 95+ (mobile)
- 🔒 SSL A+ rating

**Integrações:**
- 📊 Salesforce: 100% de pedidos sincronizados
- 📱 Twilio: 99.8% delivery rate
- 🏥 CRM API: 10k validações/dia (média)
- 💾 SQL Server: 50k registros/mês

**Adoção:**
- 👨‍⚕️ 2.000+ médicos cadastrados (3 primeiros meses)
- 🎯 15.000+ pedidos de desconto processados
- ⭐ 4.8/5 satisfação (pesquisa interna)

---

### Impacto no Cliente

**Transformação digital iniciada:**
- ✅ Git implementado e adotado
- ✅ Processos de desenvolvimento estabelecidos
- ✅ Time interno capacitado em stacks modernas
- ✅ Infraestrutura cloud configurada (Azure)
- ✅ Roadmap de evolução definido

**Base para futuros projetos:**
- Arquitetura serviu de referência para outras iniciativas
- Padrões de código documentados (coding standards)
- Pipelines CI/CD reutilizados

---

## Tech Stack

`.NET 7` `C#` `Entity Framework Core` `SQL Server` `React 18` `Next.js 13` `TypeScript` `Tailwind CSS` `Salesforce API` `Twilio` `WordPress REST API` `Docker` `Polly` `OAuth2` `JWT` `LGPD Compliance`

---

## Key Decisions & Trade-offs

### Por que Next.js em vez de React puro?

**Requisitos:**
- SEO crítico (farmacêutica precisa rankar)
- Performance (médicos usam mobile)
- Conteúdo dinâmico (WordPress)

**Next.js oferece:**
- ✅ SSR out-of-the-box
- ✅ API routes (BFF pattern)
- ✅ Otimizações automáticas (image, fonts)
- ✅ Deploy simplificado (Vercel, Azure)

---

### Por que manter WordPress?

**Alternativas consideradas:**
1. ❌ Migrar conteúdo para banco + CMS custom (tempo)
2. ❌ Strapi/Contentful (custos + learning curve)
3. ✅ **WordPress headless** (melhor trade-off)

**Vantagens:**
- Time de marketing já sabe usar
- Conteúdo aprovado já estava lá
- WordPress REST API é sólida
- Custo zero (já estava rodando)

---

### Por que .NET 7 em vez de Node.js?

**Contexto:** Cliente tinha preferência por Microsoft stack.

**Benefícios adicionais:**
- Performance superior (vs Node em APIs)
- Type safety nativa (C#)
- Entity Framework (ORM maduro)
- Integração fácil com Azure (deploy futuro)
- Time do cliente tinha familiaridade

---

## Lessons Learned

### 1. Infraestrutura Atrasada? Prepare Alternativas

Não espere servidores/credenciais para começar:
- Docker local é seu amigo
- Mocks permitem progresso
- CI/CD pode ser preparado antes de haver onde deployar

**Lição:** Controle o que você pode controlar.

---

### 2. Processos > Ferramentas

Mesmo sem Git corporativo, estabeleci:
- Branching strategy
- Code review
- Commit conventions
- Documentation standards

**Resultado:** Quando ferramentas chegaram, time já sabia usá-las.

---

### 3. Upskilling é Investimento, Não Custo

Pair programming e code reviews levaram tempo, mas:
- ✅ Time ficou autônomo mais rápido
- ✅ Qualidade de código aumentou
- ✅ Knowledge sharing natural
- ✅ Onboarding de novos devs simplificado

---

### 4. Resiliência Desde o Início

Implementar Polly (retry, circuit breaker) no início salvou em produção:
- Twilio teve instabilidade (resolvida automaticamente)
- Salesforce teve manutenção (queue funcionou)
- CRM API teve lentidão (cache mitigou)

**Lição:** Não deixe resiliência para "depois". Falhas vão acontecer.

---

### 5. Comunicação Clara de Riscos

Reportei semanalmente:
- Bloqueios (infraestrutura, credenciais)
- Riscos (prazos, dependências)
- Soluções alternativas (mocks, workarounds)

**Resultado:** Stakeholders sabiam exatamente o status e não tiveram surpresas.

---

## Challenges & How They Were Overcome

| Desafio | Impacto | Solução | Resultado |
|---------|---------|---------|-----------|
| Sem Git | Bloqueio total | Setup local + GitLab Cloud | Time produtivo dia 1 |
| Sem servidores | Sem ambiente de dev | Docker Compose local | Dev/test local completo |
| Credenciais atrasadas | Integração bloqueada | Mock services | Progresso sem bloqueio |
| Time inexperiente | Código de baixa qualidade | Pair prog + Code review | Ramp-up em 4 semanas |
| Múltiplas integrações | Complexidade alta | Polly + patterns | Zero downtime prod |

---

## Next Steps (Pós-MVP)

**Roadmap sugerido ao cliente:**

1. **Fase 2: Expansão de funcionalidades**
   - Dashboard para médicos (histórico de pedidos)
   - Notificações push (Firebase)
   - Integração com e-commerce (compra direta)

2. **Fase 3: Otimizações**
   - Cache distribuído (Redis)
   - CDN para assets estáticos
   - Analytics avançado (Amplitude)

3. **Fase 4: Escala**
   - Kubernetes (AKS)
   - Microserviços (quebrar monolito)
   - Event-driven architecture (Azure Service Bus)

---

**Resultado:** MVP entregue em produção apesar de começar literalmente do zero, estabelecendo fundações sólidas para transformação digital do cliente.

[Precisa construir um MVP em cenário desafiador? Entre em contato](#contact)
