Interface web responsiva desenvolvida em AngularJS 1.x para o sistema DiabetesAI Care.
- Framework: AngularJS 1.8.2
- Styling: CSS3 + Bootstrap components
- Arquitetura: SPA (Single Page Application)
- Responsividade: Mobile-first design
| Página | Descrição | Arquivo |
|---|---|---|
| Login | Autenticação OAuth2 | login.html |
| Onboarding | Cadastro inicial | onboarding.html |
| Home/Dashboard | Interface principal | home.html |
| Register | Registro de usuários | register.html |
frontend/
├── home.html # Dashboard principal
├── login.html # Página de login
├── onboarding.html # Onboarding usuário
├── register.html # Registro
├── index.html # Entry point
├── css/
│ ├── styles.css # Estilos principais
│ └── components.css # Componentes reutilizáveis
├── js/
│ ├── app.js # Configuração Angular
│ ├── controllers.js # Controllers
│ ├── services.js # Serviços Angular
│ └── utils.js # Utilitários
├── components/ # Componentes modulares
│ ├── modal.html # Modal reutilizável
│ ├── chart.html # Gráficos
│ └── form.html # Formulários
└── src/ # TypeScript (futuro)
| Aba | Descrição | Funcionalidades |
|---|---|---|
| Daily Plan | Plano diário personalizado | ✅ Timeline interativo ✅ Marcar/desmarcar refeições ✅ Alertas glicêmicos |
| Nutrition | Plano nutricional semanal | ✅ Lista completa 5 dias ✅ Detalhes por refeição ✅ Substituições alimentares |
| Glucose Monitor | Monitoramento glicêmico | ✅ Leituras em tempo real ✅ TIR/TAR/TBR ✅ Gráficos históricos |
| Profile | Perfil do usuário | ✅ Dados pessoais ✅ Preferências ✅ Histórico médico |
- 🎤 Voz: Síntese de fala para chat
- 🎨 Contraste: Cores semânticas
- 🔍 Fonte: Tamanho ampliado disponível
- ⌨️ Teclado: Navegação completa
<!-- Estrutura do modal -->
<div class="meal-modal">
<h3>{{selectedMeal.name}}</h3>
<div class="food-items">
<div ng-repeat="food in selectedMeal.food_items">
<span>{{food.name}}</span>
<span>{{food.macros.calories}} kcal</span>
</div>
</div>
<div class="total-nutrition">
<strong>Total: {{selectedMeal.total_nutrition.calories}} kcal</strong>
</div>
</div><!-- Timeline do Daily Plan -->
<div class="timeline">
<div ng-repeat="item in timeline" class="timeline-item">
<div class="time">{{item.time_display}}</div>
<div class="content">
<h4>{{item.label}}</h4>
<p>{{item.description}}</p>
<button ng-click="vm.markMealConsumed(item)">
{{item.consumed ? '✓ Consumido' : 'Marcar'}}
</button>
</div>
</div>
</div># 1. Instalar dependências
npm install
# 2. Servir arquivos estáticos
python -m http.server 8080
# 3. Ou via script
./scripts/start_server.sh # Inicia API + Frontend# Estrutura recomendada
frontend/
├── dist/ # Build otimizado
├── src/ # Source TypeScript
├── test/ # Testes unitários
└── docs/ # Documentação componentes/* Variáveis CSS */
:root {
--primary-color: #4CAF50;
--secondary-color: #FF9800;
--danger-color: #F44336;
--success-color: #4CAF50;
--background: #F5F5F5;
--text-primary: #212121;
}
/* Componentes */
.btn-primary { background: var(--primary-color); }
.btn-danger { background: var(--danger-color); }
.meal-card { border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }/* Mobile-first */
@media (max-width: 768px) {
.timeline-item { flex-direction: column; }
.meal-modal { width: 95%; max-width: none; }
}
@media (min-width: 769px) {
.dashboard-grid { display: grid; grid-template-columns: 1fr 1fr; }
}| Endpoint | Método | Descrição |
|---|---|---|
/api/users/{id}/plan |
GET | Buscar plano do usuário |
/api/users/{id}/consumed-meals |
POST/DELETE | Marcar/desmarcar refeições |
/api/users/{id}/adherence |
GET | Calcular adesão |
/api/chat |
POST | Chat com assistente |
// Estrutura do controller principal
angular.module('diabetesApp')
.controller('MainCtrl', function($http, $scope) {
var vm = this;
// Estado global
vm.user = { /* dados do usuário */ };
vm.timeline = [ /* plano diário */ ];
vm.meals = [ /* plano nutricional */ ];
vm.adherence = { /* estatísticas */ };
// Ações principais
vm.loadPlan = function() { /* carregar plano */ };
vm.markMealConsumed = function(meal) { /* marcar refeição */ };
vm.sendChat = function() { /* enviar mensagem */ };
});# Testes unitários
npm test
# Testes de integração
python tests/test_frontend_integration.py
# Testes visuais
python tests/test_frontend_display.py- ✅ Templates: Renderização correta
- ✅ Controllers: Lógica de negócio
- ✅ Services: Integração API
- ✅ Acessibilidade: Funcionalidades especiais
- ✅ Chrome 80+
- ✅ Firefox 75+
- ✅ Safari 13+
- ✅ Edge 80+
- ✅ Desktop (1920x1080+)
- ✅ Tablet (768x1024+)
- ✅ Mobile (375x667+)
# Minificar e otimizar
npm run build
# Deploy para produção
scp dist/* user@server:/var/www/html/<!-- CDN para performance -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"># Atualizar dependências
npm update
# Verificar vulnerabilidades
npm audit
# Limpar cache
npm cache clean --force// Debug Angular
angular.element(document.body).injector().get('$rootScope').$apply();
// Verificar controllers
console.log('Controllers loaded:', angular.element(document.body).controller());