App Android de técnica Pomodoro desenvolvido com arquitetura MVVM, Jetpack Compose e internacionalização completa.
- ⏱️ Timer Pomodoro: 25 min trabalho, 5 min pausa curta, 15 min pausa longa
- 🔔 Notificação Persistente: Acompanhe o timer sem manter o app aberto
- 🌍 11 Idiomas: Inglês, Espanhol, Chinês Simplificado, Hindi, Árabe, Bengali, Português (BR e PT), Russo, Japonês e Francês
- 🎨 Material Design 3: Interface moderna com Jetpack Compose
- 💾 Persistência: Configurações salvas com DataStore
O projeto segue a arquitetura MVVM (Model-View-ViewModel) com as seguintes camadas:
app/src/main/java/digital/tonima/pomodore/
├── data/
│ ├── model/ # Modelos de dados
│ │ ├── TimerMode.kt
│ │ ├── TimerState.kt
│ │ ├── PomodoroSettings.kt
│ │ └── PomodoroUiState.kt
│ └── repository/ # Camada de dados
│ └── PomodoroRepository.kt
├── ui/
│ ├── components/ # Componentes reutilizáveis
│ │ ├── CircularProgressTimer.kt
│ │ ├── TimerDisplay.kt
│ │ ├── PomodoroButton.kt
│ │ └── SessionCounter.kt
│ ├── screens/ # Telas do app
│ │ └── PomodoroScreen.kt
│ ├── viewmodel/ # ViewModels
│ │ └── PomodoroViewModel.kt
│ └── theme/ # Temas e cores
├── service/ # Serviços
│ └── PomodoroForegroundService.kt
├── util/ # Utilitários
│ └── Constants.kt
└── MainActivity.kt
- Kotlin - Linguagem de programação
- Jetpack Compose - UI moderna e declarativa
- Hilt - Injeção de dependências
- ViewModel & StateFlow - Gerenciamento de estado
- DataStore - Persistência de configurações
- Foreground Service - Notificações persistentes
- Material Design 3 - Design system
- Coroutines & Flow - Programação assíncrona
Todas as strings estão no strings.xml e traduzidas para:
- 🇺🇸 Inglês (default)
- 🇪🇸 Espanhol
- 🇨🇳 Chinês Simplificado
- 🇮🇳 Hindi
- 🇸🇦 Árabe
- 🇧🇩 Bengali
- 🇧🇷 Português (Brasil)
- 🇵🇹 Português (Portugal)
- 🇷🇺 Russo
- 🇯🇵 Japonês
- 🇫🇷 Francês
- Idle: Timer parado
- Running: Timer em execução
- Paused: Timer pausado
- Completed: Timer completado
- Start: Iniciar timer
- Pause: Pausar timer
- Resume: Retomar timer
- Stop: Parar e resetar timer
- Skip: Pular para próxima sessão
- 25 minutos de trabalho
- 5 minutos de pausa curta
- Após 4 sessões: 15 minutos de pausa longa
O app usa um Foreground Service para manter uma notificação persistente que:
- Mostra o tempo restante
- Exibe o tipo de sessão (Trabalho/Pausa)
- Permite pausar, retomar e pular pelo notificação
- Funciona mesmo com o app em segundo plano
Indicador circular de progresso do timer
Display do tempo restante em formato MM:SS
Botão estilizado (primário e secundário)
Contador de sessões completadas
O projeto usa Hilt para injeção de dependências:
- AppModule: Provê o
PomodoroRepositorycomo singleton
PomodoroViewModelanotado com@HiltViewModele recebePomodoroRepositoryvia construtor
PomodoroApplicationanotada com@HiltAndroidApp
MainActivityanotada com@AndroidEntryPointpara suportar injeção
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />- Abra o app
- Toque em "Iniciar" para começar uma sessão de trabalho
- O timer contará 25 minutos
- Acompanhe pelo notificação se quiser
- Quando completar, automaticamente inicia a pausa
- Use "Pular" para avançar para próxima sessão
- Use "Pausar" para pausar temporariamente
- Tela de configurações para personalizar durações
- Histórico de sessões com Room Database
- Estatísticas e gráficos de produtividade
- Sons e vibração ao completar
- Tema claro/escuro
- Widgets para tela inicial
Este projeto foi criado como base de app Pomodoro com arquitetura MVVM.