O Sentimento App é uma aplicação robusta desenvolvida em Flutter focada no monitoramento emocional, gestão de metas pessoais e registro de memórias. O projeto utiliza uma arquitetura moderna e escalável para proporcionar uma experiência fluida ao usuário final.
O aplicativo oferece um conjunto completo de ferramentas para o bem-estar:
- Registro de Humor: Acompanhamento diário do estado emocional com suporte a tags e notas.
- Diário Pessoal: Visualização em calendário das entradas de humor e reflexões.
- Gestão de Metas: Sistema de check-in de hábitos e metas com anéis de progresso.
- Fotos Anuais: Registro de momentos especiais com localização GPS e seleção de humor.
- Estatísticas Detalhadas: Dashboards com gráficos de distribuição de humor e streaks de consistência.
- Ferramentas de Apoio: Exercícios de respiração guiados e acesso rápido a contatos de emergência.
- Notificações: Lembretes personalizados e notificações via Firebase Cloud Messaging.
O projeto adota o padrão MVVM (Model-View-ViewModel) Pragmático, estruturado para facilitar a manutenção por desenvolvedores solo:
- Framework: Flutter (SDK ^3.10.3).
- Backend & Auth: Supabase (Database & Realtime).
- Notificações & Core: Firebase (Cloud Messaging).
- Gerência de Estado: Provider.
- Navegação: GoRouter.
- Banco de Dados Local: Shared Preferences.
- Flutter & Dart: Framework e linguagem base para o desenvolvimento cross-platform.
- MVVM Pragmático: Padrão de projeto focado em produtividade solo, separando View, ViewModel e Model.
- Supabase: Gerenciamento de banco de dados em tempo real, autenticação e armazenamento.
- Firebase Messaging: Implementação de notificações push e comunicação na nuvem.
- Shared Preferences: Armazenamento local de estados persistentes do app.
- Flutter Dotenv: Gestão de variáveis de ambiente e segurança de chaves.
- Provider: Gerenciamento de estado reativo e injeção de dependência.
- Get It: Localizador de serviços para desacoplamento de classes.
- GoRouter: Navegação declarativa e robusta baseada em rotas.
- FL Chart: Gráficos estatísticos de humor e desempenho.
- Flutter Animate: Adição de efeitos visuais e micro-interações fluidas.
- Flutter Map & Geolocator: Integração de mapas e serviços de localização GPS.
- Table Calendar: Calendário interativo para visualização do histórico emocional.
- Mocktail: Criação de mocks para testes de unidade e integração sem dependência de internet.
- Flutter Test: Garantia de integridade da lógica de negócio nos ViewModels.
- Model: Representação imutável dos dados (ex:
lib/backend/tables). - ViewModel: Lógica de negócio e gestão de estado da página (ex:
lib/ui/pages/.../model.dart). - View: Interface de usuário reativa (ex:
lib/ui/pages/.../page.dart). - Service/Manager: Singletons para serviços globais como autenticação e notificações.
- Flutter SDK instalado.
- Conta no Supabase e Firebase configurada.
- Clone o repositório:
git clone https://github.com/Franklyn-R-Silva/sentimento_app.git
- Instale as dependências:
flutter pub get
- Configure as variáveis de ambiente:
- Renomeie o arquivo
.env.exemplepara.env. - Preencha com suas credenciais do Supabase e Firebase.
A estratégia de testes prioriza a lógica de negócio e integrações críticas:
- Ferramentas:
flutter_testemocktailpara simulação de dependências. - Execução:
flutter test
lib/auth: Gestão de sessão e provedores de autenticação Supabase.lib/backend: Definições de tabelas e serviços de dados.lib/core: Utilidades, temas, constantes e componentes base.lib/services: Serviços de notificação e toasts.lib/ui/pages: Páginas organizadas por funcionalidade (Home, Stats, Journal, Goals, etc).lib/ui/shared: Componentes de UI reutilizáveis.
Franklyn R. Silva
- Repositório: Franklyn-R-Silva/sentimento_app