Frontend profissional para presença pública e autenticação de profissionais na MedBR Global.
Slogan: Saúde sem fronteiras
Este projeto entrega o frontend da MedBR Global com foco em páginas públicas, autenticação (Login) e cadastro (Onboarding) de profissionais. A arquitetura segue o padrão Component + Feature (feature-first), com separação clara entre UI, features e serviços compartilhados.
- React + TypeScript (Vite)
- Bootstrap 5
- React Hook Form + Zod (validação)
- Axios (com interceptors: refresh token, retry, 401)
- TanStack Query
- React Router
- ESLint + Prettier + Husky + lint-staged
- Vitest + Testing Library
- Sentry (observabilidade)
src/
components/ # Componentes compartilhados (UI, providers, etc.)
features/ # Features organizadas por domínio (ex: auth)
lib/ # Serviços compartilhados (apiClient, env, sentry)
pages/
tests/
styles/
npm install
npm run devnpm run build
npm run previewnpm run test
npm run test:watchnpm run lint
npm run formatCrie um .env com base em .env.example ou use os ambientes prontos:
.env.development.env.staging.env.production
VITE_API_BASE_URL=https://api.medbrglobal.com
VITE_API_TIMEOUT=15000
VITE_API_REFRESH_URL=/api/auth/refresh
VITE_API_LOGIN_PATH=/api/auth/login
VITE_API_REGISTER_PATH=/api/profissionais/register
VITE_SENTRY_DSN=
VITE_ENVIRONMENT=production
Os contratos são centralizados em src/features/auth/schemas/authSchemas.ts.
Login
POST /api/auth/login
{
"email": "[email protected]",
"senha": "Senha123"
}Cadastro profissional
POST /api/profissionais/register
{
"nome": "Fernanda",
"sobrenome": "Souza",
"data_nascimento": "12/04/1988",
"email": "[email protected]",
"senha": "Senha@123",
"pais": "Brasil",
"estado": "SP",
"cidade": "São Paulo",
"cep_zip": "01010-000",
"endereco": "Av. Paulista, 1000",
"area_atuacao": "Psicologia",
"conselho": "CRP",
"numero_conselho": "06/123456",
"licenca": "US-98765",
"estado_licenca": "CA",
"redes_sociais": {
"website": "https://drafernandalima.com",
"linkedin": "https://linkedin.com/in/drafernandalima",
"instagram": "https://instagram.com/drafernandalima"
},
"descricao": "Psicóloga com foco em terapia breve e acolhimento a brasileiros no exterior.",
"foto": "https://medbrglobal.com/uploads/fernanda.jpg",
"email_confirmado": false,
"termos_aceitos": true,
"data_cadastro": "2024-01-01T00:00:00.000Z"
}- Token armazenado após cadastro: o token de acesso é persistido e o usuário
é redirecionado para
/dashboard. - Roles: guard de rotas suporta roles (
doctor,admin) via storage. - Fallback amigável: erros de rede exibem mensagens claras ao usuário.
- Zod em contratos: valida payloads enviados e recebidos da API.
docker build -t medbrglobal-frontend .
docker run -p 8080:80 medbrglobal-frontendManifests em k8s/ incluem Deployment, Service, Ingress e HPA.
Pipeline em .github/workflows/ci.yml com lint, tests e build.
- Configurar monitoramento e logging no ambiente de produção
- Ajustar CSP/headers conforme política corporativa
- Configurar estratégia de refresh token no backend
- Revisar acessibilidade e internacionalização
- Licença MIT em
LICENSE. - Dependências principais listadas em
THIRD_PARTY_NOTICES.md.
README.md