A comprehensive Android application built with Kotlin that helps users manage their personal wellness and daily health routines.
- Add, edit, and delete personal habits (e.g., drink water, meditate, steps)
- Daily progress tracking with visual progress indicators
- Checkbox-based habit completion system
- Real-time progress percentage calculation
- Log mood entries with emoji selection (π, π, π, π, π, π’, π‘, π΄, π€, π)
- Add optional notes to mood entries
- View past mood entries in chronological order
- Detailed mood entry viewer with timestamps
- Customizable reminder intervals (15 minutes to 5 hours)
- Background notification system using WorkManager
- Enable/disable reminders with simple toggle
- Persistent notification scheduling
- Interactive line chart using MPAndroidChart
- Visual representation of mood trends over the past week
- Touch-enabled chart with zoom and pan capabilities
- Automatic data visualization from mood entries
- Share weekly mood summaries with other apps
- Implicit intent integration for social sharing
- Formatted mood reports with timestamps and notes
- Language: Kotlin
- Architecture: Activities + Fragments
- UI Framework: Material Design 3
app/src/main/java/com/example/moodi/
βββ MainActivity.kt # Hosts navigation and fragment management
βββ HabitFragment.kt # Habit tracking functionality
βββ MoodFragment.kt # Mood journal and chart visualization
βββ SettingsFragment.kt # App settings and hydration reminders
βββ SharedPrefManager.kt # Data persistence utility
βββ NotificationHelper.kt # Hydration reminder notifications
- Storage: SharedPreferences with Gson serialization
- Data Models: Habit, MoodEntry data classes
- State Management: Retain user preferences and app state
- Main Navigation: BottomNavigationView with 3 tabs
- Fragment Management: Fragment transactions for screen switching
- Intent Handling: Explicit intents for navigation, implicit for sharing
- BottomNavigationView: Primary navigation between sections
- FloatingActionButton: Quick access to add habits/moods
- CardView: Content containers with elevation and rounded corners
- RecyclerView: Efficient list display for habits and moods
- SeekBar: Interval selection for hydration reminders
- SwitchMaterial: Toggle controls for settings
- Phone Support: Optimized for portrait and landscape orientations
- Tablet Support: Responsive layouts that work on larger screens
- Material Design 3: Modern UI components with custom color scheme
androidx.core:core-ktx- Kotlin extensionsandroidx.appcompat:appcompat- Backward compatibilitycom.google.android.material:material- Material Design componentsandroidx.fragment:fragment-ktx- Fragment supportandroidx.navigation:navigation-fragment-ktx- Navigation frameworkandroidx.work:work-runtime-ktx- Background task management
com.github.PhilJay:MPAndroidChart- Chart visualizationcom.google.code.gson:gson- JSON serialization
- Android Studio Arctic Fox or later
- Android SDK 24+ (Android 7.0)
- Kotlin 2.0.21+
- Clone the repository
- Open the project in Android Studio
- Sync Gradle files
- Build and run the application
The app requires the following permissions:
POST_NOTIFICATIONS- For hydration reminder notificationsWAKE_LOCK- For background task executionRECEIVE_BOOT_COMPLETED- For notification persistence after device restart
data class Habit(
val id: String,
val name: String,
val description: String,
val isActive: Boolean,
val createdAt: Long
)data class MoodEntry(
val id: String,
val emoji: String,
val note: String,
val timestamp: Long
)- Primary: #FF6B73 (Coral)
- Secondary: #4ECDC4 (Teal)
- Accent: #FFE66D (Yellow)
- Background: #F8F9FA (Light Gray)
- Surface: #FFFFFF (White)
- Light theme with Material Design 3 components
- Custom color palette for brand consistency
- Responsive typography and spacing
- Habits: Persistent storage of user habits
- Moods: Mood entry history with timestamps
- Settings: User preferences and notification settings
- Daily Progress: Habit completion tracking
- User interactions trigger data updates
- SharedPrefManager handles serialization
- UI components reflect data changes
- Background tasks maintain notification state
- Create custom habits with names and descriptions
- Mark habits as complete with visual feedback
- Track daily progress with percentage calculations
- Edit or delete existing habits
- Persistent storage across app sessions
- Emoji-based mood selection (10 different emotions)
- Optional text notes for context
- Chronological mood history
- Weekly trend visualization
- Social sharing capabilities
- Configurable reminder intervals
- Background notification system
- Persistent scheduling across app restarts
- User-controlled enable/disable functionality
- Interactive line charts for mood trends
- Weekly mood pattern analysis
- Touch-enabled chart interactions
- Automatic data scaling and formatting
- Fragment-based architecture for modular UI components
- RecyclerView adapters for efficient list management
- Material Design components for consistent UI
- WorkManager integration for reliable background tasks
- Kotlin coroutines for asynchronous operations
- Material Design 3 for modern UI components
- Responsive layouts for multiple screen sizes
- Accessibility support with proper content descriptions
This project is developed as a demonstration of Android development best practices using Kotlin, Material Design, and modern Android architecture patterns.
This is a demonstration project showcasing Android development skills. Feel free to use it as a reference for your own projects or as a learning resource.
Moodi - Track your habits, log your moods, and stay hydrated! π