Table of Contents
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.
|
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.
|
βββ Minimal-Todo/
βββ Contributing.md
βββ LICENSE.md
βββ README.md
βββ app
βββ build.gradle
βββ gradle
βββ gradle.properties
βββ gradlew
βββ gradlew.bat
βββ screenshots
βββ settings.gradle
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. |
Before getting started with Minimal-Todo, ensure your runtime environment meets the following requirements:
- Programming Language: Java
- Package Manager: Gradle
Install Minimal-Todo using one of the following methods:
Build from source:
- Clone the Minimal-Todo repository:
β― git clone https://github.com/avjinder/Minimal-Todo
- Navigate to the project directory:
- Install the project dependencies:
Using gradle
Β
Run Minimal-Todo using the following command:
Using gradle
Β
Run the test suite using the following command:
Using gradle
Β
Contributing Guidelines
- Fork the Repository: Start by forking the project repository to your github account.
- Clone Locally: Clone the forked repository to your local machine using a git client.
git clone https://github.com/avjinder/Minimal-Todo
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear message describing your updates.
git commit -m 'Implemented new feature x.'
- Push to github: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
- Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!
Contributor Graph
This project is protected under the SELECT-A-LICENSE License. For more details, refer to the LICENSE file.
- List any resources, contributors, inspiration, etc. here.