A Pomodoro and focus tracking application built with JavaFX.
- Free Timer: Counts up indefinitely - perfect for flexible work sessions
- Pomodoro: Classic 25-minute work sessions with 5-minute breaks
- Custom Timer: Set your own work and break durations (1-120 minutes for work, 1-60 minutes for breaks)
- Track focus time by category (English, Coding, AI, Math, or custom categories)
- Automatic session saving when timer completes naturally
- Manual save option (minimum 1 minute)
- View statistics by day, week, month, and all-time
- Daily streak tracking (π₯)
- Today's total focus time (β±)
- Breakdown by category
- Week and month totals
- Light and dark themes
- Side menu with settings and statistics
- Sound notification when timer completes (ding.mp3)
- Select a category from the list
- Choose your timer mode (Free Timer, Pomodoro, or Custom Timer)
- Click "Start" to begin focusing
- The timer will show your progress
- Click "Pause" to pause, or "Stop" to end and save the session
- Work phase: 25 minutes of focused work
- Break phase: 5 minutes of rest
- Automatically switches between work and break
- Sessions are auto-saved when work phase completes
- Select "Custom Timer" mode
- Set your work duration (e.g., 30 minutes)
- Set your break duration (e.g., 10 minutes)
- Click "Apply" to save settings
- Timer will alternate between work and break phases
- Click "Add Category" to create new categories
- Click "Remove Category" to delete selected category
- Categories help organize your focus sessions
- Open the side menu (β° button)
- View today's time, streak, and category breakdowns
- Statistics update automatically after each session
src/main/java/lablabu/
βββ controller/
β βββ MainController.java # Simple timer view controller
β βββ TimerController.java # Main app controller
βββ model/
β βββ AppState.java # Application state and settings
β βββ Category.java # Category model
β βββ Session.java # Session model
βββ service/
β βββ SoundService.java # Audio playback (unused)
β βββ StatsService.java # Statistics calculations
β βββ StorageService.java # JSON persistence
β βββ TimerService.java # Timer logic
βββ Launcher.java # Entry point
βββ Main.java # JavaFX Application
src/main/resources/lablabu/
βββ main-view-v2.fxml # Main UI layout
βββ theme-dark.css # Dark theme styles
βββ theme-light.css # Light theme styles
βββ ding.mp3 # Completion sound
βββ beet.png # App icon
- Sessions and settings are saved to
data.jsonin the application directory - Automatic migration from old data format
- Data persists between application restarts
- Focus: Work/study phase (label shows "Focus")
- Break: Rest phase (label shows "Break")
- Status line updates to show current activity
- Free Timer: Sessions saved when manually stopped (min 1 minute)
- Pomodoro/Custom: Work sessions auto-saved when phase completes naturally
- Break sessions are NOT saved (they're rest time)
- All sessions include category, duration, date, and timestamps
- Java 17 or higher
- JavaFX 17+
- Maven (for building)
- Open project in IntelliJ IDEA or Eclipse
- Run
Launcher.javamain method
mvn clean package
java -jar target/lablabu-1.0.jarThe application includes a ding sound (ding.mp3) that plays when:
- Pomodoro work phase completes
- Custom timer work phase completes
- Break phase completes
Sound does NOT play when:
- Manually stopping the timer
- Pausing the timer
- Dark Theme: Default, easy on the eyes for long sessions
- Light Theme: Alternative bright theme
- Switch in the side menu settings
- Theme preference is saved and persists
- Use categories to track different types of work
- Check your daily streak to maintain consistency
- Start with Pomodoro mode if new to time management
- Adjust Custom Timer for longer deep work sessions
- Review statistics weekly to see your progress
Current version: 1.0
Educational project - free to use and modify





