A modern, feature-rich desktop application for tracking and building better habits
Features β’ Installation β’ Usage β’ Technologies β’ Contributing
- Overview
- Features
- Installation
- Usage
- Technologies
- Project Structure
- Configuration
- Development
- Contributing
- License
- Contact
- Acknowledgments
Habit Tracker is a comprehensive desktop application built with JavaFX that helps you build and maintain positive habits. With features like streak tracking, detailed analytics, calendar view, and customizable themes, it provides everything you need to stay motivated and achieve your goals.
- β Visual Progress Tracking - See your progress at a glance
- π Advanced Analytics - Understand your habit patterns with charts
- π Calendar View - Track your entire month's performance
- π Smart Notifications - Never miss your daily habits
- π¨ Customizable Themes - 6 beautiful themes to choose from
- πΎ Data Persistence - Your data is saved automatically
- π Gamification - Earn points and maintain streaks
- Real-time habit tracking with checkboxes
- Progress bar showing daily completion
- Statistics cards (Total Habits, Completed, Streak, Points)
- Weekly progress chart
- Add/Edit/Delete habits
- Category-based organization (Study, Exercise, Meditation, Outdoor)
- Monthly calendar with habit completion visualization
- Color-coded days (Green: Great, Yellow: Good, Orange: Okay)
- Navigate between months
- Quick jump to today
- Visual history of your habits
- Pie Chart - Category distribution
- Line Chart - Weekly trend analysis
- Performance Metrics - Completion rate, average streak
- Best Streak Tracker - Monitor your longest streak
- Top Category - See where you're most consistent
- 6 Themes: Light, Dark, Ocean, Sunset, Forest, Purple
- Notification Settings - Enable/disable different notification types
- Daily Reminders - Set custom reminder time (hour & minute)
- Auto-save - Never lose your data
- Export/Import - Backup and restore your habits
- Toast notifications for habit completion
- Streak milestone celebrations
- Daily reminders at custom times
- Achievement unlocks
- Success/Warning/Error notifications
- Java Development Kit (JDK) 17 or higher
- Download from: Oracle JDK or OpenJDK
- Apache Maven 3.6+
- Download from: Maven Official Site
- Git (for cloning)
- Download from: Git Official Site
git clone https://github.com/YOUR_USERNAME/AdvancedHabitTracker.git
cd AdvancedHabitTracker# Clean and compile
mvn clean compile
# Run the application
mvn javafx:run# Build JAR with dependencies
mvn clean package
# Run the JAR
java -jar target/advanced-habittracker-2.0-SNAPSHOT.jar-
Launch the Application
mvn javafx:run
-
Add Your First Habit
- Click the "Add Habit" button
- Enter habit name (e.g., "Morning Exercise")
- Select category (Study, Exercise, Meditation, or Outdoor)
- Click "Add"
-
Track Your Progress
- Check the box when you complete a habit
- Watch your streak increase π₯
- Earn points for each completion π
-
Explore Features
- Click on different tabs: Dashboard, Calendar, Statistics, Settings
- Try different themes in Settings
- Set up daily reminders
- π Dashboard - Track today's habits
- π Calendar - View monthly history
- π Statistics - Analyze your performance
- βοΈ Settings - Customize preferences
Ctrl + N- Add new habitCtrl + S- Save settingsCtrl + T- Toggle themeF5- Refresh data
| Technology | Version | Purpose |
|---|---|---|
| Java | 17 | Programming Language |
| JavaFX | 21.0.1 | GUI Framework |
| Maven | 3.9+ | Build Tool |
| FXML | 1.0 | UI Layout |
| CSS3 | - | Styling |
- javafx-controls - UI components
- javafx-fxml - FXML support
- javafx-graphics - Graphics rendering
- javafx-base - Base JavaFX classes
- ControlsFX (11.1.2) - Enhanced UI controls and notifications
- Design Pattern: MVC (Model-View-Controller)
- Build System: Maven
- Dependency Management: Maven POM
- Version Control: Git
AdvancedHabitTracker/
βββ src/
β βββ main/
β β βββ java/
β β β βββ com/
β β β βββ habittracker/
β β β βββ AdvancedHabitTrackerApp.java # Main application
β β β βββ controller/ # Controllers
β β β β βββ DashboardController.java
β β β β βββ CalendarController.java
β β β β βββ StatisticsController.java
β β β β βββ SettingsController.java
β β β βββ model/ # Data models
β β β β βββ Habit.java
β β β β βββ HabitTracker.java
β β β β βββ Statistics.java
β β β β βββ WeatherData.java
β β β β βββ UserSettings.java
β β β β βββ Achievement.java
β β β βββ service/ # Business logic
β β β β βββ HabitAPIService.java
β β β β βββ WeatherService.java
β β β β βββ NotificationService.java
β β β β βββ DataExportService.java
β β β β βββ QuoteService.java
β β β βββ util/ # Utilities
β β β βββ ThemeManager.java
β β β βββ NotificationManager.java
β β β βββ APIConfig.java
β β βββ resources/
β β βββ com/
β β βββ habittracker/
β β βββ view/ # FXML layouts
β β βββ dashboard.fxml
β β βββ calendar.fxml
β β βββ statistics.fxml
β β βββ settings.fxml
β βββ test/ # Unit tests
βββ docs/ # Documentation
β βββ guides/ # User guides
βββ .gitignore # Git ignore rules
βββ pom.xml # Maven configuration
βββ README.md # This file
βββ LICENSE # MIT License
Edit src/main/java/com/habittracker/util/APIConfig.java:
// Notification Settings
public static final int REMINDER_HOUR = 9; // Default: 9 AM
public static final int REMINDER_MINUTE = 0; // Default: 0 minutes
public static final boolean ENABLE_NOTIFICATIONS = true;
// Feature Flags
public static final boolean ENABLE_CALENDAR_VIEW = true;
public static final boolean ENABLE_ADVANCED_CHARTS = true;
public static final boolean ENABLE_ACHIEVEMENTS = true;Available themes in ThemeManager.java:
- Light (Default)
- Dark
- Ocean
- Sunset
- Forest
- Purple
-
Clone the repository
git clone https://github.com/YOUR_USERNAME/AdvancedHabitTracker.git cd AdvancedHabitTracker -
Open in IntelliJ IDEA
- File β Open β Select project folder
- IntelliJ will automatically detect Maven project
-
Build the project
mvn clean install
-
Run from IntelliJ
- Right-click on
AdvancedHabitTrackerApp.java - Select "Run 'AdvancedHabitTrackerApp.main()'"
- Right-click on
# Run all tests
mvn test
# Run specific test
mvn test -Dtest=HabitTrackerTest# Generate Javadoc
mvn javadoc:javadoc
# View documentation
open target/site/apidocs/index.htmlContributions are welcome! Here's how you can help:
- Fork the Project
- Create your Feature Branch
git checkout -b feature/AmazingFeature
- Commit your Changes
git commit -m 'Add some AmazingFeature' - Push to the Branch
git push origin feature/AmazingFeature
- Open a Pull Request
- Follow the existing code style
- Write meaningful commit messages
- Add tests for new features
- Update documentation
- Test your changes thoroughly
If you find a bug, please create an issue with:
- Description of the bug
- Steps to reproduce
- Expected behavior
- Screenshots (if applicable)
- System information (OS, Java version)
This project is licensed under the MIT License - see the LICENSE file for details.
Rafiul Islam
- GitHub: https://github.com/rafiul254
- Email: rafuulislam2004@gmail.com
- LinkedIn: https://www.linkedin.com/in/rafi-ul-islam-b9485233b
- JavaFX - UI Framework
- ControlsFX - Enhanced Controls
- Maven - Build Tool
- Font Awesome - Icons inspiration
- Shields.io - README badges
- All contributors who helped improve this project
- Data export to CSV/JSON
- Cloud synchronization
- Mobile app companion
- Habit templates
- Social features (share achievements)
- AI-powered habit suggestions
- Integration with fitness trackers
- Multi-language support
- Advanced reporting
- Team challenges
- Lines of Code: ~5,000+
- Files: 25+
- Features: 30+
- Themes: 6
- Charts: 2 types (Pie, Line)
Made with β€οΈ and β by Rafiul Islam