{"id":24901064,"url":"https://github.com/vishal150494/task-management-system","last_synced_at":"2026-05-05T14:11:36.369Z","repository":{"id":275307675,"uuid":"854396410","full_name":"Vishal150494/Task-Management-System","owner":"Vishal150494","description":"Its a simple Task Management System project to demonstrate my Web Application Development skills using tools like Python, Flask, Database System, Docker and demonstrate my practical insights on developing and deploying RESTful APIs \u0026 micro services. Using the task management system user can perform all CRUD operations based on some input attributes","archived":false,"fork":false,"pushed_at":"2024-09-09T05:13:34.000Z","size":546,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T18:18:26.429Z","etag":null,"topics":["api","api-documentation","controllers","curl","docker","docker-compose","flask-login","flask-migrate","flask-sqlalchemy","flask-web","flassger","html","integration-testing","jinja2-template","models","mvc-architecture","postgresql-database","swagger-ui","unit-testing","views"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vishal150494.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":"2024-09-09T05:12:38.000Z","updated_at":"2024-09-09T06:11:18.000Z","dependencies_parsed_at":"2025-02-01T15:40:54.047Z","dependency_job_id":"6bf2fed4-5377-4a79-9675-40162b75e658","html_url":"https://github.com/Vishal150494/Task-Management-System","commit_stats":null,"previous_names":["vishal150494/task-management-system"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vishal150494%2FTask-Management-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vishal150494%2FTask-Management-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vishal150494%2FTask-Management-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vishal150494%2FTask-Management-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vishal150494","download_url":"https://codeload.github.com/Vishal150494/Task-Management-System/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245898319,"owners_count":20690466,"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":["api","api-documentation","controllers","curl","docker","docker-compose","flask-login","flask-migrate","flask-sqlalchemy","flask-web","flassger","html","integration-testing","jinja2-template","models","mvc-architecture","postgresql-database","swagger-ui","unit-testing","views"],"created_at":"2025-02-01T21:14:58.742Z","updated_at":"2025-10-26T08:40:12.056Z","avatar_url":"https://github.com/Vishal150494.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flask Task Management System\nIts a simple and effective Task Management System built using Flask. The system provides APIs for handling task related CRUD operations.\n\n## Features\nI have made an effort to include the following basic features of a task management tool/software such as\n* **User authentication** (includes user registration, login \u0026 logout)\n* **Task Management** (includes adding a new task, editing an existing task \u0026 deleting an existing task)\n    * Priority feature for tasks\n    * Due dates for tasks\n* **Swagger UI** (OpenAPI) for API documentation\n\n## Table of Contents\n- [Getting Started](#getting-started)\n    - [Prerequisites](#prerequisites)\n    - [Installation and Running the Web Application](#installation-and-running-the-web-application)\n- [Using the Application](#using-the-application)\n- [API Documentation](#api-documentation)\n- [Development Setup](#development-setup)\n- [Running Tests](#running-tests)\n- [License](#license)\n\n## Getting Started\n### Prerquisites\nBefore you get started with this project / repository, make sure you have the following installed on your system:\n* Docker\n* docker-compose\n* Python 3.10\n\n### Installation and Running the Web Application\n1. Clone my public repository:\n```\ngit clone https://github.com/VishalAshok1504/Task-Management-System.git\ncd Task-Management-System\n```\n2. Under the root folder, replace the place holders with desired inputs under **'.env'** file.\n3. Run:\n```\nflask db migrate -m\"\u003cInitial Migration message\u003e\"\nflask db upgrade\n```\n4. Build and run the web application using docker\n```\ndocker-compose up --build\n```\n**NOTE:** _The above command runs the application in a development environment. Setting up a development environment is discussed below under_ **Development Setup**.\n\n3. The web application is accessible at http://localhost:5000.\n\n### Using the application\n* To register a **new user** account, navigate to '**/auth/register**'. After a new user is successfully registered, the application will automatically redirect the user to the login page.\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/Registration_Page.png\" alt=\"First Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n  \u003cspan style=\"font-size: 24px; vertical-align: middle;\"\u003e\u0026rarr;\u003c/span\u003e\n  \u003cimg src=\"assets/Login_Page.png\" alt=\"Second Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eFigure 1: After a successful registration, user is redirected to the Login page\u003c/em\u003e\n\u003c/p\u003e\n\n* To Log In an **existing user**, navigate to '**/auth/login**'.\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/Registration_Page.png\" alt=\"First Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eFigure 2: Login Page\u003c/em\u003e\n\u003c/p\u003e\n\n* Once logged in, the user can **add**, **edit** and **delete** tasks through '**/tasks**' endpoints. Following are some browser snippets of task management operations running on my local machine.\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/Dashboard_Empty.png\" alt=\"First Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n  \u003cspan style=\"font-size: 24px; vertical-align: middle;\"\u003e\u0026rarr;\u003c/span\u003e\n  \u003cimg src=\"assets/Add_Task_First_Time.png\" alt=\"Second Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eFigure 3: Click on \u003cstrong\u003eAdd New Task\u003c/strong\u003e which will redirect to \u003cstrong\u003e/tasks/add_task\u003c/strong\u003e\u003c/em\u003e\n\u003c/p\u003e\n\n* After you create a new task, the application will be redirected to **/tasks/dashboard** with a flash message on top of the browser as shown below.\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/Add_New_Task.png\" alt=\"First Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eFigure 4: Dashboard\u003c/em\u003e\n\u003c/p\u003e\n\n* User can add as many tasks as he wants to and edit any existing tasks as well. \n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/Add_one_more_task.png\" alt=\"First Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n  \u003cspan style=\"font-size: 24px; vertical-align: middle;\"\u003e\u0026rarr;\u003c/span\u003e\n  \u003cimg src=\"assets/Edit_Existing_Task.png\" alt=\"Second Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eFigure 5: Click on \u003cstrong\u003eEdit\u003c/strong\u003e which will redirect to \u003cstrong\u003e/tasks/edit_task/task_id\u003c/strong\u003e\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/Edit_Existing_Task.png\" alt=\"First Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eFigure 6: Dashboard with edited task\u003c/em\u003e\n\u003c/p\u003e\n\n* User can delete any existing task, by clicking **DELETE**. Once deleted, it will redirect you to the dashboard with a flash message on top of the browser as shown below.\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/DELETE_Task.png\" alt=\"First Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eFigure 7: Dashboard with flash message\u003c/em\u003e\n\u003c/p\u003e\n\n* If user decides to logout, he could do so by clicking **Logout** on top left of the web page, which will redirect you back to the login page with a flash message on top of the browser as shown below.\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/Logout.png\" alt=\"First Image\" width=\"400\" style=\"vertical-align: middle;\"/\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eFigure 8: Login Page with flash message\u003c/em\u003e\n\u003c/p\u003e\n\n### API documentation\nThe Swagger UI for API documentation is accessible at **'/api/docs'**. Here you can find detailed information about the request and response structures for each API endpoints as well as the Schemas. \n\n**NOTE:** Since I am using ***.html*** format to define my views/templates, unfortunately it could only handle ***POST*** requests. You will find similar implementation in my API documentation, i.e for ***PUT*** \u0026 ***DELETE*** I have made use of **POST** requests. \n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"assets/Swagger UI.png\" alt=\"This is my Swagger UI with endpoints and Schemas\" style=\"width: 75%;\"\u003e\n    \u003cbr\u003e\n    \u003cfigcaption\u003eFigure 9: \u003cstrong\u003eSwagger UI\u003c/strong\u003e\u003c/figcaption\u003e\n\u003c/div\u003e\n\n## Development Setup\nSince you are using this repo for the first time, to set up a development environment, follow these steps:\n\n1. Ensure **python** and **pip** are installed.\n2. Install the required python packages using\n```\npip install -r requiremnets.txt\n```\n3. Run \n```\nflask db migrate -m\"\u003cInitial Migration message\u003e\"\nflask db upgrade\n```\n4. To run the flask application locally:\n```\nflask run\n```\n\n### Running Tests\nTo run automated tests for this flask system, run the following command:\n```\npython -m unittest discover -s tests\n```\n\n### License\nThis project is licensed under the **MIT license** -see the **'LICENSE'** file for more details.\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishal150494%2Ftask-management-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvishal150494%2Ftask-management-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishal150494%2Ftask-management-system/lists"}