Flutter Todoist App

Details 📜

This is a Flutter app designed to interact with the Todoist API, offering a seamless task management experience. It incorporates modern Flutter technologies, adheres to Clean Architecture principles, and is built for scalability and maintainability.


Table of Contents

  1. Features
  2. Technologies Used
  3. Prerequisites
  4. Setup
  5. Preview
  6. Resources
  7. Contributing

Features 🏹

The Flutter Todoist App offers a variety of features aimed at enhancing productivity:

  • Task Management: View, add, and manage tasks fetched from the Todoist API.
  • Dark and Light Themes: Switch between themes for comfortable viewing.
  • Localization: Supports English and German languages, ensuring accessibility for a broader audience.
  • Task Timer: Each task includes a built-in timer to help users track time spent.
  • Completed Tasks View: Review tasks marked as complete.
  • Offline Mode: Retain access to previously fetched tasks using local storage.
  • Responsive Design: Adapts beautifully to various screen sizes.
  • Clean Architecture: Ensures maintainable, testable, and scalable code structure.
  • Unit Testing: Comprehensive tests to ensure functionality and reliability.

Technologies Used

The app is built with the following technologies:

Core Libraries:

  • Flutter: Framework for crafting high-quality, natively compiled applications.
  • Dart: Programming language optimized for fast development and expressive UI.

State Management and Dependencies:

  • Flutter Bloc: Efficient state management solution.
  • GetIt: Dependency injection and service locator.

Networking and APIs:

  • Dio: HTTP client for managing API calls.
  • Retrofit: Simplifies API requests with type-safe REST client generation.

Local Storage and Utilities:

  • Hive: Lightweight, blazing fast, key-value database.
  • Flutter Secure Storage: For securely storing sensitive user data.
  • Shared Preferences: Persistent storage for basic key-value data.

UI and Theming:

  • Lottie: Dynamic animations.
  • Google Fonts: Enhances UI with custom typography.
  • Go Router: Advanced routing for Flutter apps.

Additional Tools:

  • Intl: For internationalization and localization.
  • Animated Theme Switcher: Enables smooth transitions between themes.
  • Connectivity Plus: Monitors internet connectivity.

Prerequisites

Before running the app, make sure you have the following installed:

  • Flutter SDK: Version 3.0 or later.
  • Dart: Version 2.18 or later.
  • Android Studio/Visual Studio Code: With the Flutter and Dart plugins.
  • API Access: Ensure you have API credentials for Todoist.

Setup 🕺

  1. Clone this repository:

    git clone <repository-url>
    
  2. Navigate to the project directory:

    cd flutter_todoist_app
    
  3. Install dependencies:

    flutter pub get
    
  4. Run the app:

    flutter run
    

For advanced configuration and customization, refer to the lib/config folder for environment-specific settings.


Preview 📱

Below are examples of the app's user interface and features:

Video Demo

Todo App dehdarian fallah

Screenshots

Todo App hexfa Todo App amir
Todo App hexfa Todo App amir


Resources ℹ️


Contributing

I welcome contributions from the community. To contribute:

  1. Fork the repository.
  2. Create a feature or bug fix branch:
    git checkout -b feature-name
    
  3. Commit your changes with clear descriptions:
    git commit -m "Add feature description"
    
  4. Push your branch to your fork:
    git push origin feature-name
    
  5. Submit a pull request with detailed information about your changes.

Libraries

core\constants\constants_value
core\constants\storage_value
core\di\di
core\error\error_messages
core\error\failure
core\theme\theme
core\util\date_time_convert
core\util\storage
data\datasources\comments_remote_datasource
data\datasources\comments_remote_datasource_impl
data\datasources\local\projects_local_datasource
data\datasources\local\sync_local_datasource
data\datasources\local\tasks_local_datasource
data\datasources\remote\projects_remote_datasource
data\datasources\remote\tasks_remote_datasource
data\models\attachment_model
data\models\comment_data_request
data\models\comment_model
data\models\due_model
data\models\duration_model
data\models\project_model_response
data\models\sync_model
data\models\task_data_request
data\models\task_model_response
data\repositories\comments_repository_impl
data\repositories\projects_repository_impl
data\repositories\tasks_repository_impl
data\sync_manager
domain\entities\attachment
domain\entities\comment
domain\entities\comment_data_request
domain\entities\comment_request
domain\entities\due
domain\entities\project
domain\entities\section
domain\entities\task
domain\entities\task_data_request
domain\repositories\comments_repository
domain\repositories\connectivity_util
domain\repositories\projects_repository
domain\repositories\tasks_repository
domain\usecases\base_usecase
domain\usecases\CloseTaskUseCase
domain\usecases\create_comments_usecase
domain\usecases\create_project_usecase
domain\usecases\create_task_usecase
domain\usecases\delete_task_usecase
domain\usecases\delete_usease
domain\usecases\get_all_comments_usecase
domain\usecases\get_projects_usecase
domain\usecases\get_task_usecase
domain\usecases\get_tasks_usecase
domain\usecases\no_param
domain\usecases\update_task_usecase
gen\assets.gen
GENERATED CODE - DO NOT MODIFY BY HAND
main
presentation\bloc\base\event_base
presentation\bloc\base\state_base
presentation\bloc\comment\comment_bloc
presentation\bloc\create_task\create_task_bloc
presentation\bloc\project\project_bloc
presentation\bloc\project\project_event
presentation\bloc\project\project_state
presentation\bloc\task\task_bloc
presentation\bloc\task\task_event
presentation\bloc\task\task_state
presentation\bloc\update_task\update_task_bloc
presentation\bloc\update_task\update_task_event
presentation\bloc\update_task\update_task_state
presentation\route\app_router
presentation\route\rout_paths
presentation\views\app_drawer
presentation\views\base\base-state
presentation\views\base\base-stateless-widget
presentation\views\custom_view\custom_date_picker
presentation\views\custom_view\custom_dropdown_button
presentation\views\custom_view\custom_multiline_text_field
presentation\views\custom_view\custom_normal_text_field
presentation\views\dialog
presentation\views\fab
presentation\views\project_page
presentation\views\state_widget
presentation\views\task\create\create_task_screen
presentation\views\task\create\project_provider
presentation\views\task\create\project_provider_impl
presentation\views\task\update\update_task_screen
presentation\views\task_history
presentation\views\task_state
presentation\views\task_tile
presentation\views\tasks_page
presentation\views\test
presentation\views\timer_widget
services\api\dio_client
services\api\project_service