Skip to content

GeozedequeGuimaraes/HabitFlow

Repository files navigation

HabitFlow

App iOS de rastreamento de hábitos diários com persistência local, notificações e widget — SwiftUI · SwiftData · Charts · WidgetKit

Swift SwiftUI SwiftData Charts WidgetKit Xcode


Demo

Demo do app

Sobre o projeto

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.


Funcionalidades

  • 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

Tecnologias

  • Swift 6 com strict concurrency
  • SwiftUI para interface declarativa e reativa
  • SwiftData para persistência local com @Model e @Query
  • Charts para gráficos nativos de barras
  • WidgetKit com TimelineProvider
  • UserNotifications com UNCalendarNotificationTrigger
  • MVVM com ViewModels usando @Observable

Estrutura do projeto

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

Como executar

  1. Clone o repositório
git clone https://github.com/GeozedequeGuimaraes/HabitFlow.git
  1. Abra HabitFlow.xcodeproj no Xcode
  2. Selecione um simulador ou dispositivo físico
  3. Execute com Cmd + R

Para o widget funcionar com dados compartilhados, configure o App Group group.br.geozedeque.habitflow nos targets HabitFlow e HabitFlowWidgetExtension em Signing & Capabilities.


Screenshots

Home Home vazia Formulário Estatísticas

Autor

Geozedeque Guimarães — Estudante de Ciência da Computação, CIn-UFPE

GitHub LinkedIn

About

App iOS de rastreamento de hábitos com SwiftUI, SwiftData, Charts e WidgetKit — 100% offline

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages