Visão Geral - Billings Ease¶
O que é o Billings Ease¶
O Billings Ease é uma plataforma digital completa para gestão e acompanhamento do Método Billings de Ovulação (MBO), também conhecido como Método de Ovulação Billings (MOB). O sistema permite que mulheres registrem diariamente suas observações do ciclo menstrual, recebam orientações sobre fertilidade e mantenham comunicação com profissionais especializados.
Problema que Resolve¶
O Método Billings requer registro diário de observações (símbolos, sensações, aparências) e análise cuidadosa para determinar períodos férteis e inférteis. O Billings Ease automatiza:
- Registro diário de observações do ciclo
- Cálculo automático de períodos férteis e inférteis
- Análise de ciclos com base nas regras do Método Billings
- Comunicação entre pacientes e profissionais
- Gestão de assinaturas e pagamentos
- Sincronização entre dispositivos (web e mobile)
Principais Perfis de Usuário¶
1. Cliente (Client)¶
- Mulheres que utilizam o Método Billings
- Registram observações diárias do ciclo
- Visualizam dashboard com status de fertilidade
- Podem se vincular a profissionais para orientação
- Acessam cursos e materiais educativos
2. Profissional (Professional)¶
- Profissionais de saúde especializados no Método Billings
- Acompanham pacientes vinculados
- Analisam ciclos e fazem comentários
- Gerenciam agendamentos e mensagens
- Precisam ter perfil aprovado por administrador
3. Administrador (Admin)¶
- Gerencia usuários, planos e assinaturas
- Configura símbolos, sensações e aparências do método
- Define regras baseadas em dias do ciclo
- Acessa todas as funcionalidades do sistema
Componentes do Sistema¶
1. Backend (billings-ease-backend)¶
- Linguagem: Go
- Framework: Echo
- Banco de dados: PostgreSQL (via GORM)
- Armazenamento: Cloudflare R2 (para imagens de símbolos)
- Responsabilidades:
- API REST completa
- Regras de negócio do Método Billings
- Autenticação e autorização (JWT)
- Cálculos de fertilidade
- Gestão de ciclos e observações
- Pagamentos e assinaturas
2. Frontend Web (billings-ease-web)¶
- Linguagem: TypeScript
- Framework: React 18 + Vite
- Gerenciamento de estado: TanStack Query (React Query)
- Roteamento: React Router
- UI: Radix UI + Tailwind CSS
- Responsabilidades:
- Interface administrativa
- Interface profissional
- Interface do cliente
- Dashboard com status de fertilidade
- Gerenciamento de ciclos e observações
3. Mobile (billings-ease-mobile)¶
- Linguagem: TypeScript
- Framework: React Native + Expo
- Gerenciamento de estado: TanStack Query
- Navegação: React Navigation
- Armazenamento seguro: Expo Secure Store
- Status: Em construção
- Responsabilidades:
- Registro diário de observações
- Visualização de ciclos
- Sincronização com backend
- Interface mobile-first
Visão Macro da Arquitetura¶
┌─────────────────┐ ┌─────────────────┐
│ Frontend Web │────────▶│ │
│ (React + TS) │ │ │
└─────────────────┘ │ Backend API │
│ (Go/Echo) │
┌─────────────────┐ │ │
│ Mobile App │────────▶│ │
│ (React Native) │ │ │
└─────────────────┘ └────────┬────────┘
│
┌──────────┴──────────┐
│ │
┌─────▼─────┐ ┌──────▼──────┐
│ PostgreSQL │ │ Cloudflare │
│ Database │ │ R2 Storage │
└───────────┘ └─────────────┘
Princípios Arquiteturais¶
- Backend como fonte única de verdade: Toda regra de negócio crítica vive no backend
- API REST como contrato: Frontend e mobile consomem a mesma API
- Separação de responsabilidades: Cada camada tem responsabilidades bem definidas
- Autenticação centralizada: JWT gerenciado pelo backend, consumido por todos os clientes
Ambientes Existentes¶
Desenvolvimento (Local)¶
- Backend:
http://localhost:8080 - Frontend Web:
http://localhost:5173(Vite dev server) - Mobile: Expo dev server (porta variável)
- Banco de dados: PostgreSQL local
Produção¶
- Backend: Railway (URL configurável via
VITE_API_URL) - Frontend Web: Railway (deploy estático)
- Mobile: Expo (build para Android/iOS)
- Banco de dados: PostgreSQL no Railway
- Storage: Cloudflare R2
Variáveis de Ambiente Críticas¶
Backend:
- DATABASE_URL ou variáveis individuais (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT)
- JWT_SECRET e JWT_REFRESH_SECRET
- CORS_ORIGIN (múltiplas origens separadas por vírgula)
- R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET_NAME, R2_ENDPOINT, R2_PUBLIC_URL
- SENDGRID_API_KEY, SENDGRID_FROM_EMAIL (opcional)
Frontend Web:
- VITE_API_URL (URL completa do backend)
Mobile:
- EXPO_PUBLIC_API_URL (URL completa do backend)
Fluxo Principal de Uso¶
- Registro/Login: Usuário se registra ou faz login
- Criação de Ciclo: Cliente cria um novo ciclo menstrual
- Registro Diário: Cliente registra observações diárias (símbolo, sensação, aparência)
- Análise Automática: Backend calcula status de fertilidade baseado nas regras do Método Billings
- Visualização: Cliente visualiza dashboard com status de fertilidade e recomendações
- Orientação Profissional: (Opcional) Cliente se vincula a profissional para receber orientações
- Sincronização: (Mobile) Dados são sincronizados com o backend
Decisões Arquiteturais Importantes¶
- Go no backend: Performance, tipagem forte, excelente para APIs
- React no frontend: Ecossistema maduro, componentes reutilizáveis
- React Native no mobile: Compartilhamento de lógica com web, desenvolvimento multiplataforma
- PostgreSQL: Banco relacional robusto para dados estruturados
- JWT para autenticação: Stateless, escalável, funciona bem com múltiplos clientes
- Cloudflare R2: Armazenamento de imagens de símbolos, compatível com S3
Documentação Completa¶
A documentação está organizada em seções:
01 - Arquitetura¶
- Arquitetura Geral - Visão geral da arquitetura
- Decisões Arquiteturais - Decisões importantes e trade-offs
- Fluxos do Sistema - Fluxos principais de uso
02 - Backend¶
- Stack - Tecnologias e dependências
- Modelos - Todos os modelos de dados (30+)
- Serviços - Lógica de negócio
- Handlers - Endpoints HTTP
- Repositories - Acesso a dados
- Middlewares - Interceptadores
- Integrações - R2, SendGrid, OAuth
- Migrações - Processo de migrações
- Testes - Estratégia de testes
- Database - Estrutura do banco
- API - Documentação completa da API
03 - Frontend Web¶
- Stack - Tecnologias e dependências
- Componentes - Componentes React
- Páginas - Páginas e rotas
- Hooks - Hooks customizados
- Design System - Cores, tipografia, componentes
- Acessibilidade - Recursos de acessibilidade
- Testes - Estratégia de testes
- Roteamento - Estrutura de rotas
04 - Guides¶
- Desenvolvimento Local - Setup completo
- Contribuindo - Padrões e processo
- Troubleshooting - Problemas comuns
- Performance - Otimizações
05 - DevOps¶
- Deploy - Processo de deploy
- Monitoramento - Logs e métricas
- Backup e Recovery - Estratégia de backup
- Ambientes - Configuração de ambientes
- CI/CD - Integração e deploy contínuo
- Secrets - Gerenciamento de secrets
99 - Referências¶
- Glossário - Termos e conceitos