App iOS de rastreamento de hábitos diários com persistência local, notificações e widget — SwiftUI · SwiftData · Charts · WidgetKit
HabitFlow é um app iOS de rastreamento de hábitos que roda 100% offline. O usuário cria hábitos com nome, emoji, cor e dias da semana, marca conclusões diárias com animações e haptic feedback, acompanha estatísticas mensais com gráficos nativos do Charts e recebe lembretes via notificações locais. Um widget para a homescreen exibe o progresso do dia em tempo real.
- Hábitos personalizados com nome, emoji, cor e dias da semana
- Conclusão diária com animação e haptic feedback
- Progress ring com progresso semanal de cada hábito
- Streak tracking com contagem de dias consecutivos
- Estatísticas mensais com gráfico de barras por dia e barra de progresso por hábito
- Navegação entre meses para visualizar o histórico
- Notificações locais configuráveis por horário e dia da semana
- Widget na homescreen nos tamanhos Small e Medium
- Swipe para excluir e context menu para editar ou excluir via toque longo
- Persistência local com SwiftData, sem dependência de internet
- Swift 6 com strict concurrency
- SwiftUI para interface declarativa e reativa
- SwiftData para persistência local com
@Modele@Query - Charts para gráficos nativos de barras
- WidgetKit com TimelineProvider
- UserNotifications com UNCalendarNotificationTrigger
- MVVM com ViewModels usando
@Observable
HabitFlow/
├── HabitFlowApp.swift
├── Models/
│ ├── Habit.swift
│ └── HabitEntry.swift
├── ViewModels/
│ ├── HabitListViewModel.swift
│ ├── HabitFormViewModel.swift
│ └── StatsViewModel.swift
├── Views/
│ ├── Home/
│ │ ├── HomeView.swift
│ │ ├── HabitRowView.swift
│ │ └── ProgressRingView.swift
│ ├── Form/
│ │ ├── HabitFormView.swift
│ │ ├── EmojiPickerView.swift
│ │ ├── ColorPickerView.swift
│ │ ├── WeekdayPickerView.swift
│ │ └── ReminderPickerView.swift
│ ├── Stats/
│ │ ├── StatsView.swift
│ │ ├── MonthSelectorView.swift
│ │ ├── StreakBarChartView.swift
│ │ └── HabitStatsRowView.swift
│ └── Shared/
│ ├── EmptyStateView.swift
│ └── DeleteConfirmView.swift
├── Services/
│ ├── NotificationService.swift
│ └── WidgetDataService.swift
└── Utils/
├── ColorExtension.swift
├── DateExtension.swift
└── Constants.swift
HabitFlowWidget/
├── HabitFlowWidget.swift
├── WidgetBundle.swift
├── WidgetProvider.swift
└── WidgetEntryView.swift
- Clone o repositório
git clone https://github.com/GeozedequeGuimaraes/HabitFlow.git- Abra
HabitFlow.xcodeprojno Xcode - Selecione um simulador ou dispositivo físico
- Execute com
Cmd + R
Para o widget funcionar com dados compartilhados, configure o App Group
group.br.geozedeque.habitflownos targets HabitFlow e HabitFlowWidgetExtension em Signing & Capabilities.




