Ir para o conteúdo

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

  1. Backend como fonte única de verdade: Toda regra de negócio crítica vive no backend
  2. API REST como contrato: Frontend e mobile consomem a mesma API
  3. Separação de responsabilidades: Cada camada tem responsabilidades bem definidas
  4. 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

  1. Registro/Login: Usuário se registra ou faz login
  2. Criação de Ciclo: Cliente cria um novo ciclo menstrual
  3. Registro Diário: Cliente registra observações diárias (símbolo, sensação, aparência)
  4. Análise Automática: Backend calcula status de fertilidade baseado nas regras do Método Billings
  5. Visualização: Cliente visualiza dashboard com status de fertilidade e recomendações
  6. Orientação Profissional: (Opcional) Cliente se vincula a profissional para receber orientações
  7. 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

02 - Backend

03 - Frontend Web

04 - Guides

05 - DevOps

99 - Referências