Skip to content

Penfore/our-pomodoro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

72 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ… Our Pomodoro

Flutter Dart Version License PRs Welcome
GitHub stars GitHub forks GitHub watchers

🎯 Maximize your productivity with the Pomodoro Technique

A beautiful, clean, and efficient Pomodoro Timer app built with Flutter following Clean Architecture principles.


✨ Features

🎯 Current Features (v0.3.2)

  • πŸ… Complete Pomodoro Timer - Full timer functionality with start/pause/resume/reset βœ…
  • ⏱️ Accurate Background Timer - Timestamp-based calculation that works perfectly in background βœ…
  • πŸ”” Scheduled Notifications - Get notified even if app is closed or killed by system βœ…
  • ⏭️ Skip Session - Skip current session and auto-start next one βœ…
  • πŸ”„ Auto Transitions - Seamless flow between work and break sessions βœ…
  • πŸ“Š Session Progress - Real-time counter and visual progress indicators βœ…
  • πŸ”Š Sound Alerts - Custom audio notifications for session completions βœ…
  • πŸ“± Push Notifications - Background notifications with robust permission handling βœ…
  • 🌍 Auto Timezone Detection - Works correctly in any timezone worldwide βœ…
  • πŸ‡§πŸ‡· Portuguese Interface - Complete localization for Brazilian users βœ…
  • βš™οΈ Advanced Settings - Volume control, sound/notification toggles βœ…
  • πŸ† Credits System - Proper attribution for sounds and libraries βœ…
  • πŸŽ›οΈ Smart Controls - Context-aware controls that adapt to session state βœ…
  • πŸ’Ύ Session Persistence - Resume your session after app restart βœ…
  • πŸ—οΈ Clean Architecture - Maintainable, testable, and scalable codebase βœ…
  • πŸ§ͺ Comprehensive Testing - 57+ automated tests ensuring reliability βœ…
  • πŸ“± Cross Platform - Works on Android and iOS (build for iOS requires macOS) βœ…
  • πŸ“‘ Offline First - All data stored locally, works without internet βœ…
  • πŸŒ™ Modern Dark Theme - Beautiful dark mode with rich colors and perfect contrast βœ…

πŸ”§ Technical Foundation Complete

  • πŸ“¦ Dependency Injection - GetIt setup with manual configuration βœ…
  • πŸ›οΈ Domain Layer - Entities, repositories, and use cases βœ…
  • πŸ’Ύ Data Layer - Local storage with SharedPreferences βœ…
  • πŸŽ›οΈ State Management - BLoC pattern implementation βœ…

πŸ“‹ Planned Features

  • βš™οΈ Customizable Settings - Adjust timer durations to your preference
  • πŸ“Š Productivity Statistics - Track your focus sessions and streaks
  • πŸŒ™ Enhanced Dark Theme - Improve dark theme UI/UX design
  • 🎨 Multiple Themes - Additional color schemes and customization options
  • πŸ“± iOS Native Interface - Cupertino widgets for authentic iOS experience
  • πŸ”„ Adaptive Design - Platform-specific widgets that feel native on each OS
  • 🎡 Multiple Sound Themes - Different notification sound sets
  • 🌍 Multiple Languages - Support for additional languages beyond Portuguese

πŸ“± Screenshots

🎯 Complete App Interface (v0.3.2)

Initial State Work Session Short Break Session Complete
Initial timer state showing 25:00 ready to start first Pomodoro session Work session in progress with red circular timer and pause controls Short break screen with green timer and relaxing interface Session complete screen showing completion message and next session options
Ready to start your first Pomodoro session 25-minute focus timer with progress tracking 5-minute break with relaxing interface Session completed with next action options
Settings Screen Credits Screen
Settings screen with audio controls, volume slider, notification toggles and test buttons Credits screen showing Pixabay sound attributions and library acknowledgments with links
Complete audio and notification controls Proper attribution for sounds and libraries

✨ Interface Highlights

  • 🎯 Clean, Distraction-Free Design - Minimalist interface that keeps you focused
  • ⏰ Circular Progress Timer - Visual countdown with smooth animations
  • πŸ“Š Session Progress Tracking - Dots showing your progress through the 4-session cycle
  • πŸŽ›οΈ Smart Control Buttons - Context-aware controls (Start/Pause/Skip/Reset)
  • πŸ”„ Seamless Transitions - Automatic flow between work sessions and breaks
  • πŸ“± Responsive Design - Looks great on phones and tablets
  • βš™οΈ Advanced Settings - Complete audio and notification control panel
  • πŸ† Credits System - Proper attribution with clickable links and licensing info
  • πŸ”” Notification Testing - Platform-specific notification testing (Android only)
  • 🎡 Sound Management - Volume control, sound testing, and audio preferences

🎨 Visual Features

  • Material Design 3 components with modern styling
  • Intuitive Color Coding - Different colors for work (red) and break (green/blue) sessions
  • Real-time Updates - Session counter and timer update smoothly
  • Confirmation Dialogs - Prevents accidental actions with user-friendly prompts
  • System Theme Support - Automatically follows system dark/light mode (basic implementation)
  • Portuguese Localization - Complete interface in Brazilian Portuguese
  • Card-based Layout - Clean, organized settings and credits screens
  • Interactive Elements - Sliders, switches, and buttons with smooth animations
  • Platform-aware UI - Features adapt based on the platform (Android/iOS)

πŸ”„ Complete App Experience Demo

Our Pomodoro follows the classic Pomodoro Technique with intelligent automation and comprehensive features:

Core Timer Flow:

  1. πŸš€ Start β†’ Choose work session from floating buttons
  2. ⏰ Focus β†’ 25-minute timer with progress visualization
  3. βœ… Complete β†’ Automatic transition to 5-minute break
  4. β˜• Break β†’ Relax while the break timer counts down
  5. πŸ”„ Repeat β†’ Automatic cycle progression (4 work sessions + breaks)
  6. 🎯 Long Break β†’ 15-minute break after completing 4 work sessions
  7. 🏁 Finish β†’ Complete cycle with option to start fresh

Enhanced Features:

  • ⏭️ Skip Feature: Need to move on? Skip any session instantly with the purple "Skip Session" button!
  • βš™οΈ Settings Access: Tap the gear icon to access comprehensive audio and notification settings
  • πŸ”Š Sound Control: Adjust volume, test sounds, and customize audio alerts
  • πŸ“± Notification Management: Enable/disable notifications with platform-specific testing
  • πŸ† Credits & Attribution: View complete information about sounds and libraries used
  • πŸ‡§πŸ‡· Portuguese Interface: Fully localized experience for Brazilian users

πŸš€ Getting Started

Prerequisites

Before you begin, ensure you have the following installed:

Installation

  1. Clone the repository

    git clone https://github.com/Penfore/our-pomodoro.git
    cd our-pomodoro
  2. Install dependencies

    flutter pub get
  3. Run the app

    flutter run

Build for Production

Android (APK)

flutter build apk --release

Android (App Bundle)

flutter build appbundle --release

iOS (requires macOS)

flutter build ios --release

πŸ“± Platform Notes:

  • Android: Fully tested and APK available in releases
  • iOS: Buildable on macOS, but not officially distributed yet
  • Cross-platform compatibility: Same codebase works on both platforms

πŸ—οΈ Architecture

This project follows Clean Architecture principles, ensuring:

  • Separation of Concerns - Each layer has a single responsibility
  • Dependency Inversion - High-level modules don't depend on low-level modules
  • Testability - Easy to unit test business logic
  • Maintainability - Easy to modify and extend

Project Structure

lib/
β”œβ”€β”€ core/                     # Shared functionality
β”‚   β”œβ”€β”€ constants/           # App constants
β”‚   β”œβ”€β”€ error/              # Error handling
β”‚   β”œβ”€β”€ network/            # Network utilities
β”‚   β”œβ”€β”€ platform/           # Platform specific code
β”‚   β”œβ”€β”€ theme/              # App theming
β”‚   └── usecase/            # Base use case interface
β”œβ”€β”€ features/               # Feature modules
β”‚   └── pomodoro/          # Pomodoro feature
β”‚       β”œβ”€β”€ data/          # Data layer (models, repositories, datasources)
β”‚       β”œβ”€β”€ domain/        # Domain layer (entities, repositories, use cases)
β”‚       └── presentation/  # Presentation layer (pages, widgets, BLoC)
β”œβ”€β”€ injection_container.dart # Dependency injection setup
└── main.dart              # App entry point

Tech Stack

  • Framework: Flutter 3.35.6
  • Language: Dart 3.9.2
  • State Management: Flutter BLoC
  • Dependency Injection: GetIt
  • Local Storage: SharedPreferences
  • Functional Programming: Dartz (Either, Option)
  • Testing: Flutter Test, BLoC Test, Mocktail

πŸ§ͺ Testing

Run all tests:

flutter test

Run tests with coverage:

flutter test --coverage

View coverage report:

genhtml coverage/lcov.info -o coverage/html
open coverage/html/index.html

πŸ“‹ Development Roadmap

Phase 1: Core Foundation βœ…

  • Clean Architecture setup
  • Dependency injection
  • Basic BLoC structure
  • Data models and entities

Phase 2: Timer Implementation βœ…

  • Timer functionality (start/pause/resume/reset)
  • Session transitions and automatic flow
  • Skip session functionality
  • Session progress tracking and visual indicators
  • Circular progress timer with responsive design
  • Session state persistence

Phase 3: Enhanced Experience βœ…

  • Modern, intuitive timer interface
  • Material Design 3 components
  • Modern dark theme with rich colors and perfect contrast βœ…
  • Sound alerts and notifications (v0.3.0)
  • Robust notification system (v0.3.1)
  • Smooth animations and transitions
  • Multiple color themes
  • Advanced responsive design

Phase 4: Platform-Specific Features πŸ“

  • iOS native interface with Cupertino widgets
  • Adaptive design that feels native on each platform
  • Platform-specific animations and transitions
  • iOS-style navigation and interactions
  • Android Material You theming

Phase 5: Advanced Features πŸ“

  • Statistics dashboard
  • Customizable settings (timer durations)
  • Multiple sound themes
  • Export data functionality
  • Multiple language support

Phase 6: Platform Integration πŸ“

  • Background execution and notifications
  • iOS App Store distribution
  • System integration improvements
  • Accessibility features
  • Performance optimizations

🀝 Contributing

We love contributions! Please read our Contributing Guide to learn about our development process.

Quick Start for Contributors

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Development Guidelines

  • Follow Effective Dart guidelines
  • Write meaningful commit messages
  • Add tests for new features
  • Update documentation as needed
  • Ensure code passes flutter analyze

Types of Contributions

  • πŸ› Bug reports - Help us identify issues
  • πŸ’‘ Feature requests - Suggest new functionality
  • πŸ”§ Code contributions - Implement features or fix bugs
  • πŸ“š Documentation - Improve docs and examples
  • 🎨 Design - UI/UX improvements
  • 🌍 Translations - Help localize the app

πŸ€– AI-Assisted Development

This project embraces modern development practices and acknowledges the role of AI in today's software development landscape.

Our Position on AI

  • 🎯 AI as a Tool: We recognize that AI tools (like GitHub Copilot, ChatGPT, etc.) are valuable assistants that help developers learn, explore new technologies, and increase productivity
  • πŸ‘₯ Human Review Required: While AI can assist with code generation and problem-solving, all code must be reviewed, understood, and validated by real humans before being merged
  • 🧠 Learning Enhancement: AI tools are excellent for learning new patterns, understanding complex architectures, and exploring different implementation approaches
  • πŸ” Quality Assurance: Contributors should always understand the code they're submitting, regardless of how it was generated

Guidelines for AI-Assisted Contributions

  • βœ… Use AI tools to help with boilerplate code, documentation, or learning new concepts
  • βœ… Review and understand all AI-generated code before submitting
  • βœ… Test thoroughly - AI-generated code should be tested just like any other code
  • βœ… Document your approach - If AI helped solve a complex problem, consider documenting the solution for others
  • ❌ Don't blindly copy-paste AI-generated code without understanding it
  • ❌ Don't rely solely on AI for architectural decisions or critical business logic

The Human Touch

While we embrace AI assistance, we believe in:

  • Human creativity in solving complex problems
  • Human judgment in making architectural decisions
  • Human empathy in understanding user needs
  • Human responsibility for code quality and security

This project is built by humans, for humans, with AI as a helpful companion in our development journey.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘₯ Authors & Contributors

  • [FΓΊlvio Leo] - Initial work - @Penfore

See also the list of contributors who participated in this project.

πŸ“ž Support & Community

πŸ™ Acknowledgments

πŸ“ˆ Project Stats

GitHub Issues GitHub Pull Requests Last Commit Repo Size


Made with ❀️ and β˜• by developers, for developers

If this project helped you, please consider giving it a ⭐!

About

A beautiful Pomodoro Timer app built with Flutter following Clean Architecture principles.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages