{"id":18426692,"url":"https://github.com/marferdom/simpletaskmanager","last_synced_at":"2025-04-13T19:37:54.191Z","repository":{"id":181185384,"uuid":"643619904","full_name":"MarFerDom/simpleTaskManager","owner":"MarFerDom","description":"Simple task manger made during HyperionDev's bootcamp","archived":false,"fork":false,"pushed_at":"2023-07-14T10:49:50.000Z","size":109,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-16T08:27:21.410Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarFerDom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-21T18:28:44.000Z","updated_at":"2023-06-23T14:35:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"c5887f48-a6a7-413d-8b2c-d44d0a5f36ef","html_url":"https://github.com/MarFerDom/simpleTaskManager","commit_stats":null,"previous_names":["marferdom/simpletaskmanager"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarFerDom%2FsimpleTaskManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarFerDom%2FsimpleTaskManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarFerDom%2FsimpleTaskManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarFerDom%2FsimpleTaskManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarFerDom","download_url":"https://codeload.github.com/MarFerDom/simpleTaskManager/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248769020,"owners_count":21158748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T05:08:34.469Z","updated_at":"2025-04-13T19:37:54.179Z","avatar_url":"https://github.com/MarFerDom.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple Task Manager \u003ca id=\"top\"\u003e\u003c/a\u003e\n\nSimple Task Manager made during HyperionDev's bootcamp.\n\nThe exercise required the refactoring of an incomplete task manager and its conclusion. The application edits, stores and presents tasks and task owners following a set of requirements presented in [Project Requirements](#proj_req) Additionally unittest was used in a Test Driven Development (TDD), and more abstractions and dependency inversion was inserted to make it flexible to changes, as an extension to the original premise.\n\n### Content in this file:\n* [Requirements](#req)\n* [Installation](#install)\n* [Usage](#usage)\n* [TODO](#todo)\n* [Components](#comp)\n    * [Application Configuration](#app_conf)\n    * [Model](#model)\n    * [States](#states)\n    * [Controller](#control)\n    * [UI](#ui)\n* [Architecture](#arch)\n    * [Plugins](#plugins)\n    * [Config](#config)\n* [Project Requirements](#proj_req)\n* [Author](#author)\n\n## Requirements \u003ca id=\"req\"\u003e\u003c/a\u003e\n\n- Python 3.8.x\n- Passlib 1.7.4\n- Python-dotenv 1.0.0\n\n[back to top](#top)\n\n## Installation \u003ca id=\"install\"\u003e\u003c/a\u003e\n\n```\npip install -r requirements.txt\n```\n\n[back to top](#top)\n\n## Usage \u003ca id=\"usage\"\u003e\u003c/a\u003e\n\n\u003e ```TASK_MANAGER``` is a simple CLI app.\n\n![Main menu in CLI](https://github.com/MarFerDom/simpleTaskManager/blob/78cda35e585689796f7d281da5d3a457b9ca5090/ss_main_menu_prompt.png?raw=true)\n\n\u003e ```TASK_MANAGER_GUI``` is a simple GUI app.\n\n![TkInter GUI](https://github.com/MarFerDom/simpleTaskManager/blob/78cda35e585689796f7d281da5d3a457b9ca5090/ss_tk_inter_gui.png?raw=true)\n\n[back to top](#top)\n\n## TODO \u003ca id=\"todo\"\u003e\u003c/a\u003e\n\n    0. Write a proper README\n\n    1. Brake the app into microservices;\n\n    2. SQL and noSQL database options (local model was part of the bootcamp requirements)\n\n    3. Better UI graphics\n\n[back to top](#top)\n\n## Components \u003ca id=\"#comp\"\u003e\u003c/a\u003e\n\n\n### Application Configuration \u003ca id=\"app_conf\"\u003e\u003c/a\u003e\n\n    File app_config.json contains the app structure.\n\n\n### Model - Broken down into: \u003ca id=\"mode\"\u003e\u003c/a\u003e\n\n    1. task_master:\n\n        Implements all task related operations.\n\n    2. user_manager: \n\n        Implements all user related operations.\n    \n    3. file_handler:\n\n        Interface for local file handling for all data storage.\n\n### States: \u003ca id=\"states\"\u003e\u003c/a\u003e\n\n    The states of the app and their transitions are defined in the app_config.json file. Each state is composed of a specific controller that connects to its related UI and some configurable properties. That way some controllers/UIs are used for multiple states with flexibility and simple json editing.\n\n### Controller: \u003ca id=\"control\"\u003e\u003c/a\u003e\n\n    Implements the controller logic. Composed of the task manager and the task specific controllers: action, insertion, presentation, selection and user operations.\n\n    1. Action deals with states that do not require user interaction;\n    2. Insertion deals with states that require the user to enter one or more data;\n    3. Presentation deals with states that only present data to the user and wait confirmation;\n    4. Selection deals with states that require the user to select from options;\n    5. User operations include logging in and creation of new users, hashing and password handling is necessary.\n\n### UI: \u003ca id=\"ui\"\u003e\u003c/a\u003e\n\n    Implements the UI logic. Always in two flavors, prompt and GUI.\n\n[back to top](#top)\n\n## Architecture \u003ca id=\"arch\"\u003e\u003c/a\u003e\n\n### Plugins: \u003ca id=\"plugins\"\u003e\u003c/a\u003e\n\n    Controller and UI modules are loaded as necessary.\n\n### Config: \u003ca id=\"config\"\u003e\u003c/a\u003e\n\n    Basic app configurations constants.\n\n[back to top](#top)\n\n## Project requirements: \u003ca id=\"proj_req\"\u003e\u003c/a\u003e\n\n1 - Users and passwords saved as open text in semicolon separated values file.\n\n2 - Tasks composed of 'username', 'title', 'description', 'due date', 'assigned date' and 'completed':\n- 'username': Name of registered user resposible for said task;\n- 'title': A title for the task;\n- 'description': A description of the task;\n- 'due date': Final date for delivery of the task in %DD-%MM-\u0026YY format;\n- 'assigned date': Date in which the task was assigned in %DD-%MM-\u0026YY format; and\n- 'completed': If task is completed, values 'Yes' or 'No'.\n\n\n3 - User logs in before accessing a menu.\n\n4 - Main menu must have these options:\n- Registering a user: Requests one by one the 'username' and 'password'. Does not allow repeated usernames;\n- Adding a task: Requests one by one the 'username', 'title', 'description', and 'due date' ;\n- View all tasks: View all registered tasks attributes in a easily readable format;\n- View my task: Same as view all though only the current user's ones;\n- Generate reports: Reports are saved as text files in a readable format according to items 6 and 7 below;\n- Display statistics: Print report files content on screen, previously creating if none exists; and\n- Exit.\n\n5 - The 'Display statistics' option only shows if logged in as admin.\n\n6 - Statistics calculated and kept in task_overview.txt file include:\n- Number of tasks;\n- Number of completed tasks;\n- Number of incomplete tasks;\n- Number of overdue tasks;\n- Percentage of incomplete tasks;\n- Percentage of overdue tasks.\n  \n7 - Statistics calculated and kept in user_overview.txt file include:\n- Number of tasks;\n- Number of users;\n- For each user:\n    - Number of tasks assigned to that user;\n    - Percentage of complete tasks assigned to that user;\n    - Percentage of incomplete tasks assigned to that user;\n    - Percentage of overdue tasks assigned to that user.\n\n8 - The 'View mine' option must include a numbering system that allows for a user to select a task (-1 to return to main menu). A selected task can be marked as done or (if not completed) edited. Editing allows to change username or due date.\n\n9 - Other specific charcteristics of the prompt and print interface, such as messages, are part of the requirements.\n\n[back to top](#top)\n\n## Author\n\n\u003e [MarFerDom](https://github.com/MarFerDom) wrote the code as a compulsory task for the bootcamp.\n\n[back to top](#top)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarferdom%2Fsimpletaskmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarferdom%2Fsimpletaskmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarferdom%2Fsimpletaskmanager/lists"}