Minimal-Todo: Simplify your tasks, maximize productivity!
Developed with the software and tools below.
Minimal-Todo is a minimalist to-do list app that helps users stay organized and productive. Its core functionalities include creating, editing, and managing to-do items, setting reminders for important tasks, and customizing the app's appearance through theme selection. With features like animation, clipboard management, and context handling, Minimal-Todo aims to provide a seamless user experience. The app also supports night mode and offers analytics tracking to help users understand their productivity patterns. Overall, Minimal-Todo enables users to prioritize and track their tasks efficiently, making it a valuable tool for personal and professional productivity.
Feature | Description | |
---|---|---|
⚙️ | Architecture | The project follows a standard Android application architecture with separate modules for different components. It uses the Model-View-Presenter (MVP) design pattern to separate business logic from presentation. It also utilizes various Android components such as Activities, Fragments, and Services to implement the necessary functionality. |
🔩 | Code Quality | The codebase demonstrates good coding practices, adhering to the Android code style guidelines. It follows a modular approach, making the codebase easy to read, understand, and maintain. Proper naming conventions and documentation enhance code readability. |
📄 | Documentation | The project includes a reasonable amount of documentation, such as comments and README files, to explain the purpose and usage of the code. Although not extensive, the provided documentation is sufficient for developers to understand the codebase and its components. |
🔌 | Integrations | The project integrates with various external dependencies, including Google services (Google Analytics and Google Play Services). It also relies on libraries such as ButterKnife for view binding, Gson for JSON parsing, and JUnit for unit testing. |
🧩 | Modularity | The codebase demonstrates good modularity, separating different components into their respective modules. This modular approach allows for easy reusability and maintainability of code. Each module focuses on a specific functionality, making it easier to understand and modify. |
🧪 | Testing | The project includes unit tests using JUnit to verify the functionality of individual classes. It also includes Android instrumentation tests using Espresso for UI testing. The tests cover important features such as data storage, JSON conversion, and user interactions. |
⚡️ | Performance | The project is designed to be efficient and responsive, with no noticeable performance issues. It utilizes background services and alarms to efficiently handle reminders and notifications. Proper use of RecyclerViews and optimized data storage further enhances the app's performance. |
🛡️ | Security | The project includes basic security measures for data protection, such as storing data in a private file and using encryption. It also ensures access controls by only allowing authorized users to perform certain actions. However, the codebase does not implement advanced security features like authentication or authorization. |
📦 | Dependencies | Key external libraries and dependencies used in the project include ButterKnife for view binding, Gson for JSON parsing, Google Play Services for Google Analytics, and JUnit for unit testing. These dependencies provide necessary functionality and enhance development efficiency. |
└── Minimal-Todo/
├── Contributing.md
├── LICENSE.md
├── README.md
├── app
│ ├── .gitignore
│ ├── app-release.apk
│ ├── app.iml
│ ├── build.gradle
│ ├── google-services.json
│ ├── proguard-rules.pro
│ └── src
├── build.gradle
├── gradle
│ └── wrapper
├── gradle.properties
├── gradlew
├── gradlew.bat
├── screenshots
│ ├── add_todo_dark.png
│ ├── add_todo_light.png
│ ├── app_icon.png
│ ├── main_empty_dark.png
│ ├── main_empty_light.png
│ ├── main_full_dark.png
│ ├── main_full_light.png
│ ├── screenshot_notification.png
│ ├── screenshot_reminder_date.png
│ ├── screenshot_reminder_time.png
│ ├── screenshot_todo_snooze.png
│ ├── todo_date_dark.png
│ └── todo_time_dark.png
└── settings.gradle
.
File | Summary |
---|---|
build.gradle | This code snippet is part of the top-level build.gradle file in the Minimal-Todo repository. It configures the build settings for all sub-projects/modules and specifies dependencies. The main purpose is to set up the necessary repositories and classpaths. |
gradlew.bat | The gradlew.bat file is part of the Minimal-Todo repository and is used to execute Gradle on Windows. It sets the Java environment variables and executes GradleWrapperMain. |
settings.gradle | This code snippet includes the app module in the project's settings.gradle file. It plays a critical role in the repository's architecture by ensuring that the app module is included and incorporated into the build process. |
app
File | Summary |
---|---|
proguard-rules.pro | The code snippet in app/proguard-rules.pro is responsible for specifying ProGuard rules specific to the project. It includes keeping public classes from com.google packages and not warning about com.google.android.gms. |
build.gradle | This code snippet, located in the app/build.gradle file, is responsible for configuring the Android application build process. It defines various parameters such as the target SDK version, version code, and dependencies. The snippet also includes configuration for signing the app and enabling minification. |
google-services.json | This code snippet contains the google-services.json file, which is crucial for integrating Google services into the Minimal-Todo Android application. It provides configuration details such as project ID, API keys, and client information. |
app.src.androidTest.java.com.example.avjindersinghsekhon.minimaltodo
File | Summary |
---|---|
TestStoreRetrieveData.java | This code snippet contains test cases for the StoreRetrieveData class in the Minimal-Todo codebase. It verifies the functionality of writing and reading data from storage, ensuring the integrity of the stored data. The code also tests the conversion of an ArrayList to a JSONArray. |
ApplicationTest.java | This code snippet is part of the Minimal-Todo repository and acts as a fundamental test for the application. It verifies if the Application can be properly executed and basic testing fundamentals are in place. |
TestTodoItem.java | This code snippet contains JUnit tests for the functionality of the ToDoItem class in the Minimal-Todo repository. It tests the construction of ToDoItem objects, marshalling to JSON, and unmarshalling from JSON. The tests validate attributes such as the text body, reminder status, and date. |
app.src.main.java.com.example.avjindersinghsekhon.minimaltodo.Settings
File | Summary |
---|---|
SettingsFragment.java | This code snippet is a SettingsFragment in the Minimal-Todo Android app. It manages user preferences, including a night mode option that changes the app's theme. The fragment listens for preference changes and updates the app accordingly. |
SettingsActivity.java | This code snippet is the SettingsActivity class in the Minimal-Todo repository. It handles the UI and functionality of the settings screen, including the theme selection and navigation back to the previous screen. |
app.src.main.java.com.example.avjindersinghsekhon.minimaltodo.Reminder
File | Summary |
---|---|
ReminderFragment.java | This code snippet is a fragment in the Minimal-Todo repository. It implements the reminder functionality for a to-do item. It allows the user to set a reminder for the to-do item and provides options for snoozing the reminder. |
ReminderActivity.java | This code snippet is part of the Minimal-Todo repository and is located in the ReminderActivity.java file. It extends the AppDefaultActivity class and is responsible for creating the reminder interface of the app. It sets the layout and initializes the ReminderFragment as the initial fragment. |
app.src.main.java.com.example.avjindersinghsekhon.minimaltodo.About
File | Summary |
---|---|
AboutActivity.java | This code snippet represents the AboutActivity class in the Minimal-Todo codebase. It is responsible for displaying information about the app, including the version and contact details. The activity also handles user interactions, such as clicking the back button. |
AboutFragment.java | This code snippet is an implementation of the AboutFragment class in the Minimal-Todo app. It sets up the UI and functionality for the About screen, including displaying the app version and handling user feedback. |
app.src.main.java.com.example.avjindersinghsekhon.minimaltodo.AddToDo
File | Summary |
---|---|
AddToDoFragment.java | This code snippet, located in the AddToDoFragment.java file, handles the functionality of adding a new to-do item. It includes features such as animation, clipboard management, and context handling. |
AddToDoActivity.java | This code snippet is an activity class that extends a parent activity class from the repository architecture. It overrides methods to set the layout, create a fragment, and handle the activity's lifecycle events. |
app.src.main.java.com.example.avjindersinghsekhon.minimaltodo.Main
File | Summary |
---|---|
MainActivity.java | This code snippet represents the main activity of the Minimal-Todo repository. It handles the creation of the main interface, including the toolbar and menu options. The activity manages fragment navigation and launches other activities, such as the About and Settings activities. |
CustomRecyclerScrollViewListener.java | This code snippet is part of the Minimal-Todo repository's architecture. It contains a custom scroll listener class for RecyclerViews. It allows for hiding and showing views based on scroll direction and distance. |
MainFragment.java | This code snippet contains the implementation of the MainFragment class in the Minimal-Todo repository. It includes functionalities such as setting alarms, handling intents, managing shared preferences, and manipulating colors. |
app.src.main.java.com.example.avjindersinghsekhon.minimaltodo.Analytics
File | Summary |
---|---|
AnalyticsApplication.java | This code snippet is part of the Minimal-Todo repository and it handles analytics tracking for the application. It uses Google Analytics to track various events and screen views within the app. By implementing the AnalyticsApplication class, the app can send analytics data to Google Analytics for analysis and monitoring. |
app.src.main.java.com.example.avjindersinghsekhon.minimaltodo.AppDefault
File | Summary |
---|---|
AppDefaultFragment.java | This code snippet is a base class for fragments in the Minimal-Todo repository. It provides a default implementation for creating and destroying fragments, utilizing layout resources specific to each fragment. |
AppDefaultActivity.java | This code snippet is a base activity class that sets up the initial fragment and handles the creation of the layout for child activities in the Minimal-Todo repository. |
app.src.main.java.com.example.avjindersinghsekhon.minimaltodo.Utility
File | Summary |
---|---|
TodoNotificationService.java | This code snippet is a part of a minimalist to-do list app. It handles the creation and display of notifications for to-do reminders. Its main role is to generate and manage notifications for the user's to-do items, including setting the notification content and handling user interactions with the notifications. |
ScrollingFABBehaviour.java | This code snippet contains the ScrollingFABBehaviour class, which is responsible for controlling the behavior of the floating action button (FAB) when scrolling in the app. It ensures that the FAB stays hidden or visible based on the scroll position, accounting for snackbar and toolbar effects. |
ToDoItem.java | The ToDoItem class is a utility class that represents a to-do item in the Minimal-Todo app. It contains properties such as the to-do text, reminder status, description, color, date, and identifier. This class allows for serialization and deserialization of to-do items to/from JSON format. |
CustomTextInputLayout.java | This code snippet includes the implementation of a custom TextInputLayout. It overrides some methods to properly handle the hint functionality and ensure it is displayed correctly. The code aims to enhance the user experience of input fields within the parent repository's application. |
StoreRetrieveData.java | This code snippet defines a class named StoreRetrieveData that provides methods to save and retrieve data from a file. It uses JSON format to store and retrieve ArrayLists of ToDoItem objects. The class takes a Context and a filename in the constructor and uses them to open and read/write the file. |
Utils.java | This code snippet, located at app/src/main/java/com/example/avjindersinghsekhon/minimaltodo/Utility/Utils.java , defines a utility class called Utils . It provides a method getToolbarHeight() that returns the height of the toolbar in the app's context. |
DeleteNotificationService.java | The DeleteNotificationService code snippet is a utility class in the Minimal-Todo repository. It is responsible for handling the deletion of notifications and updating the data set accordingly. It retrieves the necessary data, removes the corresponding item, saves the updated data, and notifies the app of the change. |
ItemTouchHelperClass.java | Summary:This code snippet defines the ItemTouchHelperClass in the Utility package, extending the ItemTouchHelper.Callback class. It enables the dragging and swiping functionality for items in a RecyclerView and provides callbacks for handling these actions. |
PreferenceKeys.java | The PreferenceKeys.java code snippet provides a class that handles the preference key for night mode in the Minimal-Todo repository. It retrieves the value from resources and stores it for future use. |
RecyclerViewEmptySupport.java | The code snippet is a utility class called RecyclerViewEmptySupport that extends the RecyclerView class. It provides functionality to display an empty view when the RecyclerView is empty and hide it when there are items. This is achieved by listening to changes in the adapter's data and toggling the visibility of the empty view and the RecyclerView accordingly. |
Requirements
Ensure you have the following dependencies installed on your system:
- Java:
version x.y.z
- Clone the Minimal-Todo repository:
git clone https://github.com/avjinder/Minimal-Todo
- Change to the project directory:
cd Minimal-Todo
- Install the dependencies:
mvn clean install
Use the following command to run Minimal-Todo:
java -jar target/myapp.jar
To execute tests, run:
mvn test
-
► INSERT-TASK-1
-
► INSERT-TASK-2
-
► ...
Contributions are welcome! Here are several ways you can contribute:
- Submit Pull Requests: Review open PRs, and submit your own PRs.
- Join the Discussions: Share your insights, provide feedback, or ask questions.
- Report Issues: Submit bugs found or log feature requests for Minimal-todo.
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.
Once your PR is reviewed and approved, it will be merged into the main branch.
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.