Git Product home page Git Product logo

ifhezu / taskmanx Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 17 KB

TaskManX: Boost your productivity with an all-in-one task manager, file organizer, and password generator. Prioritize, track deadlines, and set reminders with ease. Stay organized, manage tasks, and generate secure passwords effortlessly. Supercharge your efficiency now!

Home Page: https://github.com/Ifhezu/TaskManX

License: Apache License 2.0

collaboration cs50 cs50course cs50p cs50project cs50python cs50web developer development java

taskmanx's Introduction

### TaskManX

TaskManX is a comprehensive task manager application designed to help users stay organized and efficient. This project combines task management, file organization, and a password generator into a single application. Seamlessly manage your tasks with customizable details, prioritize and track deadlines, and set reminders. Organize your files effortlessly by categorizing them based on types, and keep your directory neat and tidy. Additionally, generate strong and secure passwords with the integrated password generator. TaskManX offers a user-friendly interface and powerful functionalities to streamline your productivity.

## Features

- Task Management:

  • Add, update, and delete tasks with details such as task name, description, due date, and priority.
  • Categorize tasks and assign them to projects or tags.
  • Sort tasks by due date or priority, mark tasks as completed, and set reminders.

- File Organization:

  • Specify a directory to organize and categorize files based on their types (e.g., images, documents, videos).
  • Create subdirectories for each file type and move the corresponding files into the appropriate directories.

- Password Generator:

  • Generate strong and random passwords with customizable length and character options.
  • Include uppercase letters, lowercase letters, numbers, and symbols in the generated passwords.

## Installation (WIP)

  1. Clone the repository:

git clone https://github.com/Ifhezu/taskmanx.git

  1. Install the required dependencies:

    pip install -r requirements.txt

  2. Run the application:

    python taskmanx.py

## Usage

  1. Launch the TaskManX application.

  2. Use the provided menu options and prompts to manage your tasks, organize files, and generate passwords.

  3. Enjoy a more organized and productive workflow!

## Contributing

Contributions are welcome! If you encounter any issues or have suggestions for improvements, please open an issue or submit a pull request. Let's make TaskManX even better together.

## License

This project is licensed under the Apache License 2.0.

## Acknowledgements

TaskManX was developed as a part of the CS50P course by Iftikhar Ahmed Mazumder and Saira Gul. Special thanks to the CS50 team for their guidance and support throughout the project.

## Contact

For any inquiries or feedback, please contact me on Discord.

taskmanx's People

Contributors

ifhezu avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

taskmanx's Issues

Password Generator

  1. User Input and Preferences:

    • Prompt the user to input their desired password length. Handle cases where the input is not a valid integer or falls outside the acceptable range.
    • Ask the user to specify the types of characters they want in their password (uppercase letters, lowercase letters, numbers, symbols). You can present these options as checkboxes or allow the user to enter a specific combination of characters.
  2. Generating a Random Password:

    • Create separate lists for each character type based on the user's preferences (uppercase, lowercase, numbers, symbols).
    • Use a random number generator (provided by the programming language or a library) to select random characters from the appropriate lists.
    • Repeat the previous step until the desired password length is reached.
    • Concatenate the selected characters to form the final generated password.
  3. Password Strength:

    • Ensure that the generated password meets security standards by considering the following guidelines:
      • Define a minimum password length to prevent weak passwords (e.g., at least 8 characters).
      • Include a mix of character types (uppercase, lowercase, numbers, symbols) to enhance complexity and make the password harder to guess.
      • Avoid easily guessable patterns or common passwords by randomizing the character selection process.
  4. Display or Copy Password:

    • Provide the user with options to either display the generated password on the screen or automatically copy it to the clipboard.
    • If displaying the password, consider masking the characters (e.g., using asterisks) or providing a toggle option to reveal the password temporarily.
  5. Error Handling:

    • Implement error handling to validate user input and handle any exceptions that may occur during the password generation process. For example, check if the password length provided by the user is a valid integer and within the acceptable range.
  6. Additional Features:

    • Consider adding additional features to enhance the user experience and password security:
      • Allow users to regenerate a new password with different options without going through the entire process again.
      • Provide a strength indicator that rates the password's strength (weak, medium, strong) based on its length and complexity.
      • Implement an option to enforce the exclusion of ambiguous characters that can cause confusion (e.g., 'l' and '1', 'O' and '0').
  7. Security Considerations: (for cs50CY students)

    • If you plan to store passwords for authentication purposes, follow best practices to protect user passwords:
      • Hash and salt passwords using secure algorithms (e.g., bcrypt, Argon2) before storing them.
      • Avoid storing passwords in plaintext or reversible encryption formats.
  8. Testing and Validation: (for alumns of at least one cs50 course)

    • Thoroughly test the password generator functionality with various inputs and scenarios to ensure its reliability, randomness, and adherence to security standards.
    • Validate that the generated passwords meet the desired complexity and length requirements.

Task Manager

  1. Data Structure: Choose a suitable data structure to store tasks. For example, you can use a list of dictionaries, where each dictionary represents a task with keys like "name," "description," "due_date," and "priority."

  2. Add Task: Implement a function that prompts the user for task details (name, description, due date, priority) and adds the task to the task list. You can use input statements to gather user input and append a new task dictionary to the task list. Make sure ppl cant put weird names or sth NSFW.

  3. View Tasks: Develop a function to display the list of tasks in a readable format. Iterate over the task list and print the details of each task, including its name, description, due date, and priority.

  4. Update Task: Create a function that allows the user to update a specific task. Prompt the user to select a task by its index or unique identifier. Then, provide options for modifying its details, such as changing the name, description, due date, or priority.

  5. Delete Task: Implement a function to remove a task from the task list. Prompt the user to select a task by its index or unique identifier and remove it from the list using the del statement or the list.remove() method or sth like that.

  6. Sorting Tasks: Add functions to sort tasks based on different criteria, such as due date or priority. You can use the sorted() function or the list.sort() method with custom comparison functions to achieve the desired sorting.

  7. Mark as Completed and Reminders: Include functionality to mark tasks as completed and set reminders. Implement options for marking tasks as completed, updating their status, and setting reminders based on the due date.

File Organization Feature

The File Organization feature in TaskManX allows users to specify a directory for organization and provides functions to scan the directory, categorize files based on their types, and move them into appropriate subdirectories. This feature aims to streamline file management and ensure a neat and organized directory structure for users.

Here are the key components and functionalities of the File Organization feature:

  1. Directory Specification:

    • Users can specify a directory within TaskManX where file organization will take place.
    • This directory can be set through the application's settings or through a dedicated configuration file.
  2. File Scanning:

    • TaskManX scans the specified directory and its subdirectories recursively to identify all files present.
    • The scanning process gathers information about each file, such as the file name, extension, and location.
  3. File Categorization:

    • TaskManX categorizes files based on their types, such as images, documents, videos, audio files, etc.
    • The categorization is typically based on file extensions or file signatures (in the case of unsupported file types).
  4. Subdirectory Creation:

    • For each file category, TaskManX creates a corresponding subdirectory within the specified directory.
    • These subdirectories serve as organized containers for the categorized files.
  5. File Moving:

    • TaskManX moves the categorized files from their original locations into the appropriate subdirectories.
    • The file-moving process ensures that files are placed in the correct subdirectory based on their category.
  6. Handling Duplicate Files:

    • TaskManX handles scenarios where duplicate files are encountered during the file organization process.
    • Options are provided to either rename the duplicate files, skip them, or prompt the user for further instructions.
  7. Error Handling and Feedback:

    • TaskManX provides informative error messages or warnings in case of any issues during the file organization process.
    • Users are notified about the progress of the operation and any actions taken (e.g., number of files moved, skipped, or renamed).

User Interface Design

To ensure a user-friendly experience, TaskManX will feature a graphical user interface (GUI) implemented using the Tkinter framework. The GUI will provide intuitive menus, prompts, and input fields for users to interact with the application seamlessly. Here are the detailed specifications for the user interface design:

  1. Main Window:

    • The application will open with a main window that serves as the central hub for all functionalities.
    • The window will have a clean and visually appealing layout, with a suitable color scheme and font choices.
    • The main window will display the application logo or title for branding purposes.
  2. Menu Bar:

    • A menu bar will be located at the top of the main window, offering easy access to various features and options.
    • Common menu items such as "File," "Edit," "View," and "Help" will be included.
    • Each menu item will have a dropdown list of related actions or sub-menus for user selection.
  3. Task Management Section:

    • Task-related functionalities will be organized in a dedicated section within the main window.
    • A task list or a table will display the existing tasks, including their names, due dates, and priorities.
    • Users can add new tasks using an input field and submit button.
    • Task entries will have options for updating, marking as complete, or deleting tasks.
    • Sorting and filtering options may be available to allow users to customize how tasks are displayed.
  4. File Organization Section:

    • The file organization feature will have a separate section in the main window.
    • Users will be able to specify the directory for organization using an input field or a browse button.
    • A button labeled "Organize Files" will trigger the file scanning and organization process.
    • The progress of file organization will be displayed, indicating the number of files processed and moved.
    • If duplicate files are encountered, users will be prompted with options for renaming or skipping them.
  5. Password Generator Section:

    • The password generator feature will be integrated into the user interface for easy access.
    • Users can specify the desired password length and character options through input fields or sliders.
    • A "Generate Password" button will trigger the password generation process.
    • The generated password will be displayed to the user, allowing them to easily copy it for use.
  6. Status Bar:

    • A status bar will be located at the bottom of the main window, providing informative messages or notifications.
    • It will display relevant feedback, such as successful task additions, file organization completion, or error messages.

#Extra:
We will use the Tkinter framework for GUI implementation and design the main window with the desired layout, color scheme, and font choices. They will incorporate a menu bar at the top of the main window, providing dropdown lists for various actions and sub-menus.

The task management section will feature a task list or table, allowing users to add, update, complete, or delete tasks.

The file organization section will include an input field or browse button for directory specification and a button to trigger the file scanning and organization process. Progress updates will be displayed, and options for handling duplicate files will be provided.

The password generator section will have input fields or sliders for specifying password length and character options, along with a button to generate passwords. The generated password will be displayed for easy copying.

Finally, a status bar will be placed at the bottom of the main window, providing informative messages and notifications throughout the application.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.