Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,177 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💊 Dosiq

Aplicativo de gerenciamento de medicamentos em português brasileiro

Gerencie seus medicamentos, protocolos de tratamento e estoque de forma simples e eficiente. Agora com Autenticação Multi-usuário, Planos de Tratamento complexos e Titulação de Dose.

Version License TypeScript React Vite Supabase Vercel Telegram Vitest Zod Coverage


🎯 Funcionalidades (v4.15.4)

Phase 4-5 - Consolidação PWA e Dados ANVISA

F4.1: Hash Router & Deep Linking

  • Navegação por Hash: URLs amigáveis com #/dashboard, #/medicamentos, etc.
  • 9 Rotas Implementadas: Dashboard, medicamentos, estoque, histórico, protocolos, perfil, onboarding
  • Deep Links: Links do Telegram abrem diretamente rotas específicas
  • Histórico do Navegador: Botões voltar/avançar funcionam corretamente

F4.2: PWA Infrastructure

  • Instalável: App pode ser instalado no Android (Chrome) e iOS (Safari)
  • Offline Support: Service Worker com estratégias de cache (CacheFirst, StaleWhileRevalidate)
  • Manifest.json: Ícones em 8 tamanhos (72x72 a 512x512), tema e metadados
  • Lighthouse Score: PWA >= 90, Performance >= 90

F4.3: Push Notifications

  • Notificações Nativas: Lembretes de dose mesmo com app fechado
  • VAPID Security: Chaves de segurança em variáveis de ambiente
  • 3 Tipos de Notificações: Lembretes de dose, alertas de dose atrasada (t+15min), estoque baixo
  • LGPD Compliant: Dados de subscription protegidos com RLS

F4.4: Analytics PWA Integration

  • Privacy-First: Sem PII, dados apenas em localStorage
  • Eventos Trackeados: Instalação PWA, opt-in/opt-out push, sessões offline, deep links
  • Métricas de Uso: Visualizações de tela, interações com notificações

F4.5: Bot Standardization

  • Code Quality: 49 testes unitários para utilities do bot
  • Message Formatter: Escape centralizado de MarkdownV2
  • Error Handler: Tratamento padronizado de erros com recovery strategies
  • Duplicação Reduzida: >30% de código duplicado eliminado

F4.6: Feature Organization (Novo!)

  • Estrutura por Feature: src/features/ com 5 domínios (adherence, dashboard, medications, protocols, stock)
  • Shared Resources: src/shared/ para componentes, hooks, services e utilitários reutilizáveis
  • Path Aliases: Import limpo com @/, @features/, @shared/, @dashboard/, etc.
  • 150+ Arquivos Migrados: Código reorganizado sem breaking changes

Core

  • Autenticação Segura: Login e registro via Supabase Auth (Email/Senha).
  • Isolamento de Dados: Sistema multi-usuário com Row-Level Security (RLS) rigoroso.
  • Perfil de Usuário: Gerenciamento de conta, troca de senha e vínculo de Telegram.
  • Migração Pilot-to-Auth: Ferramenta automática para migrar dados da fase piloto para conta autenticada.

Fase 3.6 - Consolidação de Componentes

  • ~783 linhas de código removidas através da consolidação de 6 grupos de componentes
  • MedicineForm Unificado: Consolidado com FirstMedicineStep via props de onboarding (autoAdvance, onSuccess)
  • ProtocolForm com Modos: Suporte a mode='full'|'simple' para formulários completos e onboarding simplificado
  • Calendar Consolidado: Features opcionais via props (enableLazyLoad, enableSwipe, enableMonthPicker)
  • AlertList Componente Base: Componente genérico em ui/ para SmartAlerts e StockAlertsWidget
  • LogForm UX Padronizada: Experiência unificada entre Dashboard e History (botão "Plano Completo")
  • 100% Backward Compatibility: Todas as mudanças mantêm compatibilidade total com código existente
  • Zero Breaking Changes: APIs públicas preservadas, apenas adições de props opcionais

Fase 3.5 - Design Uplift

  • Glassmorphism Hierárquico: 4 níveis de intensidade (light, standard, heavy, hero) com diferentes opacidades e blur
  • Gradientes Temáticos: Gradientes para insight (cyan→purple), hero, alert-critical e success
  • Micro-interações: Scale effects, glow transitions, hover/active states em todos os componentes interativos
  • Tokens CSS Completos: Sistema de tokens para colors, borders, shadows, spacing e transitions
  • InsightCard: Componente com 11 variantes de insight dinâmico (streak_motivation, stock_alert, adherence_drop, etc.)
  • useAdherenceTrend: Hook para cálculo de tendência de adesão
  • useInsights: Hook para geração dinâmica de insights do usuário
  • adherenceTrendService: Serviço para processamento de dados de tendência
  • insightService: Serviço com 11 variantes de insight

Onda 1 - Qualidade & Performance

  • Validação Zod Runtime: 23 testes de validação eliminando erros silenciosos.
  • Cache SWR: 95% de melhoria no carregamento do dashboard (30s stale time).
  • Onboarding 4 Steps: Wizard guiado para novos usuários:
    1. Boas-vindas - Apresentação do app
    2. Medicamento - Cadastro do primeiro remédio
    3. Protocolo - Configuração da primeira rotina
    4. Telegram - Integração com bot de lembretes
  • View Otimizada de Estoque: medicine_stock_summary com 5x mais performance.
  • Persistência de Sessões Bot: TTL 30min para sessões conversacionais do Telegram.

Gerenciamento de Tratamento

  • Integração Telegram 2.0: Vínculo seguro via token temporário e suporte multi-usuário no bot.

Bot Telegram - Confiabilidade (v2.8.1)

  • DLQ Admin Interface: Interface administrativa para gerenciar notificações falhadas em /admin/dlq.
  • Daily DLQ Digest: Digest diário enviado às 09:00 para o admin com notificações falhadas.
  • Simple Retry: Retry automático de 2 tentativas para erros transitórios (network, rate limit, HTTP 5xx).
  • Correlation IDs: Rastreamento end-to-end de notificações com UUIDs.
  • Error Categorization: Identificação automática de erros retryable vs non-retryable.

Gerenciamento de Tratamento (continuação)

  • Calendário Interativo: Visualização mensal de doses tomadas com navegação e seleção de data.
  • Histórico Completo: Visualização detalhada integrada ao calendário com suporte a edições rápidas.
  • Edição e Exclusão: Flexibilidade total para ajustar registros passados com restauração automática de estoque.
  • Registros Retroativos: Registro de doses em qualquer data/hora com ajuste de fuso horário local.
  • Dashboard Premium: Interface Neo-Glass com saudações dinâmicas e indicadores em tempo real.
  • Garantia de Qualidade: Suíte de testes unitários com Vitest (1520+ testes) e linting rigoroso.

🚀 Roadmap Futuro

  • 🤖 IA Médico-Assistente: Insights sobre os protocolos com base em diretrizes médicas.
  • 📊 Relatórios de Titulação: Gráficos de evolução da dosagem ao longo do tempo.
  • 🔒 Backup Criptografado: Exportação e importação de dados de forma segura.

🛠️ Tecnologias

  • Linguagem: TypeScript 5.9 — monorepo 100% TS desde julho/2026 (épico 040): web, mobile, packages compartilhados, API serverless e bot. Regime incremental: strict: false na base + strict islands (strictNullChecks) nos módulos clínicos críticos, com ratchet automatizado (scripts/strict-island.sh) impedindo regressão de dívida de tipos
  • Frontend: React 19 + Vite (ES Modules nativo)
  • Backend: Supabase (PostgreSQL + REST API + Auth) — tipos do banco gerados (database.types.ts) e cliente tipado SupabaseClient<Database>
  • Validação: Zod 4.x (schemas runtime; tipos estáticos derivados via z.infer<>)
  • Cache: SWR (Stale-While-Revalidate) customizado - 95% mais rápido
  • Styling: CSS Vanilla com design system customizado
  • Deployment: Vercel (Frontend, API Webhooks & Serveless Functions) + Supabase (Database)
  • Testes: Vitest + React Testing Library (1520+ testes)
  • Custo: R$ 0 (tier gratuito)

📦 Instalação

Pré-requisitos

  • Node.js 22+ instalado
  • Conta no Supabase (gratuita)
  • Conta no Vercel (gratuita, opcional para deploy)
  • Conta no GitHub (gratuita, para versionamento)

Passo a Passo

  1. Clone o repositório:

    git clone https://github.com/SEU-USUARIO/dosiq.git
    cd dosiq
  2. Instale as dependências:

    npm install
  3. Configure o Supabase:

    • Siga o guia completo em SETUP.md
    • Crie um projeto no Supabase
    • Execute o SQL para criar as tabelas
    • Copie as credenciais
  4. Configure as variáveis de ambiente:

    cp .env.example .env

    Edite o arquivo .env e adicione suas credenciais do Supabase:

    VITE_SUPABASE_URL=https://seu-projeto.supabase.co
    VITE_SUPABASE_ANON_KEY=sua-chave-aqui
    
  5. Rode o servidor de desenvolvimento:

    npm run dev
  6. Acesse o app: Abra http://localhost:5173 no navegador


📚 Documentação

🚀 Para Começar

  • SETUP.md: Guia completo de configuração do Supabase, GitHub e Vercel
  • docs/QUICKSTART.md: Início rápido para desenvolvedores (inclui onboarding)

🏗️ Arquitetura & Design

💻 Referência Técnica

📊 Performance & Benchmarks

🎯 Funcionalidades Específicas


🏗️ Estrutura do Projeto (feature-based · 100% TypeScript desde o 040)

dosiq/
├── src/
│   ├── features/            # 🆕 NOVO: Organização por feature (F4.6)
│   │   ├── adherence/       # Componentes, hooks, services, utils de adesão
│   │   ├── dashboard/       # Dashboard widgets e utilitários
│   │   ├── medications/     # Domínio: Medicamentos
│   │   ├── protocols/       # Domínio: Protocolos
│   │   └── stock/           # Domínio: Estoque
│   ├── shared/              # 🆕 NOVO: Recursos compartilhados
│   │   ├── components/      # UI components, log, gamification, onboarding
│   │   ├── hooks/           # Hooks customizados (useCachedQuery, etc)
│   │   ├── services/        # Services com cache SWR
│   │   ├── constants/       # Schemas Zod centralizados
│   │   ├── utils/           # Utilitários puros
│   │   └── styles/          # CSS tokens e temas
│   ├── components/          # [LEGACY] Componentes - migrando para features/
│   │   ├── ui/              # Componentes reutilizáveis consolidados
│   │   │   ├── Button, Card, Modal, Loading
│   │   │   ├── Calendar.tsx        # Features opcionais: lazyLoad, swipe
│   │   │   └── AlertList.tsx       # Componente base para alertas 🆕
│   │   ├── medicine/        # Componentes de medicamentos
│   │   │   └── MedicineForm.tsx    # Consolidado com FirstMedicineStep
│   │   ├── protocol/        # Componentes de protocolos
│   │   │   └── ProtocolForm.tsx    # Modo 'full'|'simple'
│   │   ├── stock/           # Componentes de estoque
│   │   ├── log/             # Componentes de registro
│   │   │   └── LogForm.tsx         # UX padronizada
│   │   ├── dashboard/       # Widgets do dashboard
│   │   │   ├── SmartAlerts.tsx     # Usa AlertList
│   │   │   └── StockAlertsWidget.tsx # Usa AlertList
│   │   ├── adherence/       # Componentes de adesão
│   │   └── onboarding/      # Wizard de onboarding (4 steps)
│   │       ├── FirstMedicineStep.tsx   # Wrapper de MedicineForm
│   │       └── FirstProtocolStep.tsx   # Wrapper de ProtocolForm
│   ├── hooks/
│   │   └── useCachedQuery.ts # Hook SWR para cache de queries
│   ├── lib/
│   │   ├── supabase.ts      # Cliente Supabase
│   │   └── queryCache.ts    # Implementação SWR (Stale-While-Revalidate)
│   ├── schemas/             # Validação Zod
│   │   ├── index.ts         # Exportações dos schemas
│   │   ├── medicineSchema.ts
│   │   ├── protocolSchema.ts
│   │   ├── stockSchema.ts
│   │   ├── logSchema.ts
│   │   └── validationHelper.ts
│   ├── services/
│   │   ├── api/             # Serviços da API com validação Zod
│   │   │   ├── cachedServices.ts  # Wrappers com cache SWR
│   │   │   ├── medicineService.ts
│   │   │   ├── protocolService.ts
│   │   │   ├── stockService.ts
│   │   │   ├── logService.ts
│   │   │   └── treatmentPlanService.ts
│   │   └── api.ts           # Exportações principais
│   ├── styles/
│   │   ├── tokens.css       # Design tokens (cores, espaçamentos)
│   │   └── index.css        # Estilos globais
│   ├── views/               # Páginas principais
│   ├── App.tsx              # Componente principal
│   └── main.tsx             # Entry point
├── docs/                    # Documentação técnica expandida 📚
│   ├── ARQUITETURA.md       # Visão arquitetural incluindo padrões consolidados
│   ├── PADROES_CODIGO.md    # Convenções e padrões de componentes
│   ├── API_SERVICES.md      # APIs dos services
│   ├── CSS_ARCHITECTURE.md  # Arquitetura CSS com AlertList patterns
│   └── HOOKS.md             # Hooks customizados
├── server/                  # Bot do Telegram (Node + tsx)
│   └── bot/
├── api/                     # API Serverless (Vercel)
├── .migrations/             # Migrações SQL
├── .env.example             # Template de variáveis de ambiente
├── SETUP.md                 # Guia de configuração
└── README.md                # Este arquivo

🆕 = Componentes consolidados na Fase 3.6 (Component Consolidation Wave)


🧪 Garantia de Qualidade

O projeto utiliza uma suíte de testes unitários moderna para garantir a confiabilidade das regras de negócio:

  • Framework: Vitest (Velocidade e compatibilidade com Vite)
  • Library: React Testing Library
  • Cobertura: Services (API/Lógica de Negócio) e Componentes Críticos.
  • Type-safety: 100% TypeScript com typecheck limpo no web (tsc --noEmit) e strict islands nos módulos clínicos (dose, estoque, adesão, schemas, notificações) — erros de shape/null pegos em compile-time.

🧪 Scripts Disponíveis

npm run dev          # Servidor de desenvolvimento
npm run build        # Build de produção
npm run preview      # Preview do build
npm run lint         # Linter ESLint
npm test             # Executa a suíte de testes unitários (Vitest)
npm run bot          # Inicia o bot do Telegram localmente (para desenvolvimento)

🚀 Deploy

Deploy no Vercel

  1. Conecte seu repositório GitHub ao Vercel
  2. Configure as variáveis de ambiente no dashboard do Vercel
  3. Deploy automático a cada push na branch main

Veja instruções detalhadas em SETUP.md


🤝 Contribuindo

Este é um projeto piloto em desenvolvimento. Sugestões e feedback são bem-vindos!


📄 Licença

GNU Affero General Public License v3.0 ou posterior (AGPL-3.0-or-later) — veja LICENSE para detalhes.

O código é livre para usar, estudar, modificar e redistribuir. Se você hospedar uma versão modificada do Dosiq como serviço, a AGPL exige que o código dessa versão também seja disponibilizado aos usuários. Para licenciamento comercial alternativo (uso em produto fechado), entre em contato: contact@dosiq.app.

Contribuições externas: ao abrir um PR, você concorda em licenciar sua contribuição sob a AGPL-3.0-or-later e concede ao mantenedor o direito de relicenciá-la em ofertas comerciais do Dosiq (dual licensing).


👨‍💻 Desenvolvedor

Desenvolvido com ❤️ usando Claude Code & Google Antigravity


📞 Suporte

Para dúvidas ou problemas:

  1. Verifique a documentação em SETUP.md
  2. Abra uma issue no GitHub
  3. Entre em contato com o desenvolvedor


📝 Changelog

v2.8.0 - Phase 4: Instalabilidade e Navegação (2026-02-12)

🚀 Novas Funcionalidades

F4.1: Hash Router & Deep Linking

  • Implementação de hash-based routing para navegação SPA
  • 9 rotas completas: #/dashboard, #/medicamentos, #/medicamento/:id, #/estoque, #/historico, #/historico/:periodo, #/protocolos, #/perfil, #/onboarding
  • Deep links funcionam a partir do Telegram
  • Suporte a histórico do navegador (voltar/avançar)

F4.2: PWA Infrastructure

  • Configuração completa do vite-plugin-pwa
  • Manifest.json com ícones em 8 tamanhos
  • Service Worker com Workbox strategies
  • Suporte a instalação em Android (Chrome) e iOS (Safari)
  • Lighthouse PWA score >= 90

F4.3: Push Notifications

  • Sistema de notificações push com VAPID
  • 3 tipos: lembretes de dose, alertas de atraso, estoque baixo
  • API endpoints: /api/push-subscribe, /api/push-send
  • Componente PushPermission para gerenciamento de permissões
  • Hook usePushSubscription para controle de inscrições
  • LGPD compliant com RLS policies

F4.4: Analytics PWA Integration

  • Tracking de eventos PWA (instalação, push opt-in, sessões offline)
  • Privacy-first: sem PII, dados em localStorage apenas
  • 7 novos eventos: pwa_installed, push_opted_in/out, offline_session, etc.

F4.5: Bot Standardization

  • Utilities messageFormatter.ts e errorHandler.ts
  • 49 testes unitários para bot
  • MarkdownV2 escaping centralizado
  • 30% redução de código duplicado

F4.6: Feature Organization

  • Nova estrutura src/features/ com 5 domínios
  • Pasta src/shared/ para recursos compartilhados
  • Path aliases configurados no Vite: @, @features/, @shared/, @dashboard/, etc.
  • 150+ arquivos migrados sem breaking changes

📊 Estatísticas

  • Total de testes: 1520+ (incluindo testes críticos, smoke e componentes)
  • Cobertura Phase 4: 100% dos novos features
  • Bundle size: 762KB (gzipped: 219KB)
  • Build time: ~9.5s

v2.2.1 - Correções do Bot Telegram (2026-01-31)

  • Corrigido: Bot agora funciona com múltiplos usuários (removido MOCK_USER_ID)
  • Corrigido: Cron jobs notificam todos os usuários com Telegram vinculado
  • Adicionado: Sistema de logs estruturados (ERROR → TRACE)
  • Adicionado: Health checks via comando /health
  • Adicionado: Reconexão automática em erros de rede
  • Adicionado: Validação de token do Telegram na inicialização
  • Melhorado: Tratamento de erros nos comandos do bot
  • Melhorado: Cache de protocolos por usuário
  • Configuração: Compatível com cron-job.org (GET requests com Authorization header)

v2.0.0 - Multi-User Auth (Janeiro 2026)

  • ✅ Autenticação segura via Supabase Auth
  • ✅ Isolamento de dados com RLS
  • ✅ Integração Telegram 2.0 com tokens temporários

Versão: 4.15.4 (040: monorepo 100% TypeScript) Última atualização: 09 Julho 2026

About

Aplicativo de gestão de medicamentos brasileiro

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages