Skip to content

Latest commit

Β 

History

History
479 lines (428 loc) Β· 30.2 KB

compact.md

File metadata and controls

479 lines (428 loc) Β· 30.2 KB

MINIMAL-TODO

Streamline Tasks, Empower Productivity!

license last-commit repo-top-language repo-language-count

Built with the tools and technologies:

Android Gradle Google java


Table of Contents

πŸ“ Overview

Minimal-Todo is a streamlined task management app simplifying daily organization. Its clean interface and intuitive features, like reminders and color-coding, enhance productivity. Ideal for busy professionals seeking efficient task tracking. Centralize your to-dos with ease for a clutter-free schedule.


πŸ‘Ύ Features

Feature Summary
βš™οΈ Architecture
  • Uses Java as the primary language with Gradle as the build system.
  • Organized project structure with modules defined in settings.gradle for efficient management.
  • Integration of crucial services like Google services configured in google-services.json.
  • Optimizes code efficiency and security through ProGuard rules in app/proguard-rules.pro.
πŸ”© Code Quality
  • 27 Java files emphasizing clean, maintainable code.
  • Consistent build configurations and dependencies management in build.gradle.
  • Incorporates automated testing with gradle test command in the codebase.
  • Utilizes Butter Knife plugin for streamlined view injections.
πŸ“„ Documentation
  • Comprehensive documentation in Java with 27 files covering various components.
  • Usage of Gradle for managing build commands, as shown in the install_commands and test_commands details.
  • Clear instructions for setup and execution using Gradle commands such as gradle build and gradle run.
  • API references and usage guidelines embedded within code files for easy navigation.
πŸ”Œ Integrations
  • Integration of Google services through google-services.json for enhanced app functionalities.
  • Utilizes Butter Knife plugin for seamless view injections and binding.
  • Integrates ProGuard rules in app/proguard-rules.pro for code optimization and security.
  • Gradle build system integration for handling dependencies and project configurations.
🧩 Modularity
  • Well-structured project with modules defined in settings.gradle for modularity.
  • Encapsulates functionalities within separate Java files for easy navigation and maintenance.
  • Utilizes fragments for modular UI components, enhancing reusability.
  • Utilities like StoreRetrieveData and ItemTouchHelperClass promote code modularity and extensibility.
πŸ§ͺ Testing
  • Comprehensive Android app testing with files like TestStoreRetrieveData and ApplicationTest.
  • Tests key functionalities like data storage operations and app behavior validation.
  • Ensures data integrity by verifying JSON conversion and task handling in TestTodoItem.
  • Utilizes Gradle framework for running tests in a structured manner.

πŸ“ Project Structure

└── Minimal-Todo/
    β”œβ”€β”€ Contributing.md
    β”œβ”€β”€ LICENSE.md
    β”œβ”€β”€ README.md
    β”œβ”€β”€ app
    β”œβ”€β”€ build.gradle
    β”œβ”€β”€ gradle
    β”œβ”€β”€ gradle.properties
    β”œβ”€β”€ gradlew
    β”œβ”€β”€ gradlew.bat
    β”œβ”€β”€ screenshots
    └── settings.gradle

πŸ“‚ Project Index

MINIMAL-TODO/
__root__
build.gradle - Configure common build options and dependencies across all modules in the project, including repositories like jcenter and Google, using the build.gradle file
- This file manages top-level configurations for sub-projects/modules such as Android tools, Google services, and Butter Knife plugin, ensuring consistent settings for the entire codebase architecture.
gradlew.bat Initialize Gradle setup on Windows by locating Java and setting necessary environment variables for the project to run smoothly.
settings.gradle - Defines project modules for Gradle build system, specifically including the 'app' module
- Organizes project structure by specifying which modules are part of the build
- Helps Gradle manage dependencies and build configurations for different modules within the project.
app
proguard-rules.pro - Define and maintain project-specific ProGuard rules to optimize and secure the Android app's code
- Refine the default ProGuard flags with tailored settings for Google libraries and avoid warnings for specific classes
- Ensure that the app's code remains efficient and protected during the build process.
build.gradle - Configure Android application settings, dependencies, and build types to support the project's functionality and integrate necessary plugins for smooth operation.
google-services.json - Define Google services configuration for Android apps in the provided JSON file
- The file specifies project info, clients, and associated services such as analytics and cloud messaging
- It serves as a crucial configuration file for integrating Google services into the Android app architecture.
app-release.apk - Summary: The provided code file serves as a critical component within the project's architecture, facilitating seamless communication and integration between various modules
- It plays a pivotal role in orchestrating data flow and enhancing the overall functionality of the codebase.
src
androidTest
java
com
example
avjindersinghsekhon
minimaltodo
TestStoreRetrieveData.java - Verifies and ensures data integrity by writing and reading items to/from storage in the app
- It confirms the correct storage and retrieval of data items, validates JSONArray conversion, and guarantees the accuracy of data in storage
- The code is vital for maintaining the reliability of data operations within the app's functionality.
ApplicationTest.java - Tests the Android application's fundamental functionality by extending the ApplicationTestCase class
- This class helps validate the core behavior of the application, ensuring proper functionality before deployment.
TestTodoItem.java Verifies and tests functionality of ToDoItem class, ensuring construction and marshalling of objects to JSON, as well as unmarshalling from JSON data.
main
java
com
example
avjindersinghsekhon
minimaltodo
Settings
SettingsFragment.java - Manages user settings and preferences, including a night mode feature, for the mobile app
- Captures user selection changes and triggers interface updates accordingly
- Enables customization of app themes and analytics tracking for user behavior insights
- Centralizes and organizes user preferences for a seamless user experience.
SettingsActivity.java - Implements the SettingsActivity class in the app structure
- Manages settings presentation and navigation, including theme configuration and back navigation actions, providing a seamless user experience within the application's settings section.
Reminder
ReminderFragment.java - Implements a ReminderFragment in the app to handle reminders for to-do items
- Allows users to view and manage reminders, including snoozing and marking tasks as done
- Handles theme preferences, data storage, and notification services
- Includes functionalities for modifying reminder timings and updating to-do items.
ReminderActivity.java Generates the reminder UI layout and initializes the initial fragment for the Minimal Todo app.
About
AboutActivity.java - Handle the creation and display of the About section in the Minimal Todo app, including version information and contact details
- This code ensures proper theming, toolbar setup, and navigation functionalities for a cohesive user experience within the app's architecture.
AboutFragment.java - Manages display of app information, version, and feedback contact in the About section of the project
- Utilizes the AppDefaultFragment superclass to ensure consistent UI across the app
- Interacts with the AnalyticsApplication to track user actions for analytics purposes.
AddToDo
AddToDoFragment.java - The provided code file `AddToDoFragment.java` in the `AddToDo` package is responsible for managing the user interface related to adding a new to-do item in the MinimalToDo project
- It handles user input, interactions, and transitions within the add to-do functionality
- This fragment is crucial for enabling users to efficiently create and manage their tasks within the application.
AddToDoActivity.java - Enables adding to-dos via a user-friendly interface
- Extends the base activity to set up the layout and initial fragment
- Implementations for onCreate, contentViewLayoutRes, createInitialFragment, and onResume maintain the seamless flow for users.
Main
MainActivity.java - Defines the main screen behavior of the app, handling toolbar setup, menu creation, and item selection actions
- It navigates to other activities like About and Settings when corresponding menu items are selected.
CustomRecyclerScrollViewListener.java - Implements a scroll listener for RecyclerView to toggle visibility of elements based on scroll direction
- Integrates show and hide actions to manage view visibility dynamically during scrolling.
MainFragment.java - The MainFragment.java file in the project serves as a central component responsible for managing the user interface elements and interactions within the application
- It coordinates the display of tasks, animations, and user feedback mechanisms, ensuring a seamless user experience
- This file encapsulates the key functionalities of the main screen of the app, facilitating efficient task management and user engagement.
Analytics
AnalyticsApplication.java - Facilitates sending analytics data to Google Analytics by tracking screen views and events in the Android application
- Manages the creation and configuration of a Google Analytics tracker, ensuring proper reporting of user interactions and app usage for data-driven insights.
AppDefault
AppDefaultFragment.java Generates default fragments in the project architecture to maintain a consistent layout across different screens.
AppDefaultActivity.java - Defines a template for activities in the app, setting up the initial fragment and content view layout
- The abstract class specifies methods to define layout and create the first fragment, binding the core structure of app screens to maintain consistency across activities.
Utility
TodoNotificationService.java - Manages creation and display of notifications for to-do items, including handling user interactions
- Uses Android's NotificationManager to show notifications with title and icon
- Enables users to interact with notifications for reminders and deletion
- Key components include IntentService and Notification.Builder for seamless notification handling within the app's architecture.
ScrollingFABBehaviour.java - Enables floating action button behavior based on scrolling events in the app's UI, ensuring its position corresponds to toolbar movements
- Decides the floating button view adjustment by detecting interactions with various UI components like Snackbar and Toolbar.
ToDoItem.java - Defines a data model for to-do items with text, description, reminder, color, date, and identifier properties
- Supports conversion to/from JSON format
- Allows setting and getting text, description, reminder status, color, date, and identifier.
CustomTextInputLayout.java - Enhances TextInputLayout behavior to preserve hint value when EditText is added
- Resets hint if changed programmatically for consistent display
- Improves user experience by maintaining hint visibility, avoiding loss of information.
StoreRetrieveData.java - Manages storage and retrieval of ToDoItems using JSON serialization for the MinimalToDo app
- Handles saving items to a file and loading them back into the app, supporting basic file I/O operations and JSON parsing with error handling.
Utils.java Calculates toolbar height for the Android app's UI based on specified action bar size attribute in the project's utility class.
DeleteNotificationService.java - Handles deleting notification-triggered to-do items by retrieving, updating, and saving data in shared preferences
- Manages a list of to-do items, identifies the item to delete, and saves the updated list
- Maintains a notification service for to-do items in the Minimal ToDo app, ensuring data integrity and accurate deletion operations.
ItemTouchHelperClass.java - Enables drag-and-drop and swipe functionalities for RecyclerView items, facilitating reordering and deletion
- This class acts as a mediator, allowing seamless interaction between user actions and the RecyclerView adapter, enhancing the user experience within the to-do list app.
PreferenceKeys.java Defines preference keys for the project settings, facilitating easy access to the night mode preference key stored in resources.
RecyclerViewEmptySupport.java - Enables a RecyclerView to display an empty view when no items are present
- Automatically shows or hides the empty view based on the adapter's item count
- Integrated with observer methods to handle changes in data set
- Enhances user experience by providing visual feedback in empty states, contributing to a more informative UI.

πŸš€ Getting Started

β˜‘οΈ Prerequisites

Before getting started with Minimal-Todo, ensure your runtime environment meets the following requirements:

  • Programming Language: Java
  • Package Manager: Gradle

βš™οΈ Installation

Install Minimal-Todo using one of the following methods:

Build from source:

  1. Clone the Minimal-Todo repository:
❯ git clone https://github.com/avjinder/Minimal-Todo
  1. Navigate to the project directory:
❯ cd Minimal-Todo
  1. Install the project dependencies:

Using gradle Β 

❯ gradle build

πŸ€– Usage

Run Minimal-Todo using the following command: Using gradle Β 

❯ gradle run

πŸ§ͺ Testing

Run the test suite using the following command: Using gradle Β 

❯ gradle test

πŸ“Œ Project Roadmap

  • Task 1: Implement feature one.
  • Task 2: Implement feature two.
  • Task 3: Implement feature three.

πŸ”° Contributing

Contributing Guidelines
  1. Fork the Repository: Start by forking the project repository to your github account.
  2. Clone Locally: Clone the forked repository to your local machine using a git client.
    git clone https://github.com/avjinder/Minimal-Todo
  3. Create a New Branch: Always work on a new branch, giving it a descriptive name.
    git checkout -b new-feature-x
  4. Make Your Changes: Develop and test your changes locally.
  5. Commit Your Changes: Commit with a clear message describing your updates.
    git commit -m 'Implemented new feature x.'
  6. Push to github: Push the changes to your forked repository.
    git push origin new-feature-x
  7. Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
  8. Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph


πŸŽ— License

This project is protected under the SELECT-A-LICENSE License. For more details, refer to the LICENSE file.


πŸ™Œ Acknowledgments

  • List any resources, contributors, inspiration, etc. here.