Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vishal150494/task-management-system
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 & micro services. Using the task management system user can perform all CRUD operations based on some input attributes
https://github.com/vishal150494/task-management-system
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
Last synced: 7 days ago
JSON representation
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 & micro services. Using the task management system user can perform all CRUD operations based on some input attributes
- Host: GitHub
- URL: https://github.com/vishal150494/task-management-system
- Owner: Vishal150494
- License: mit
- Created: 2024-09-09T05:12:38.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-09-09T05:13:34.000Z (5 months ago)
- Last Synced: 2025-02-01T15:40:49.327Z (7 days ago)
- 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
- Language: Python
- Homepage:
- Size: 533 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Flask Task Management System
Its a simple and effective Task Management System built using Flask. The system provides APIs for handling task related CRUD operations.## Features
I have made an effort to include the following basic features of a task management tool/software such as
* **User authentication** (includes user registration, login & logout)
* **Task Management** (includes adding a new task, editing an existing task & deleting an existing task)
* Priority feature for tasks
* Due dates for tasks
* **Swagger UI** (OpenAPI) for API documentation## Table of Contents
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Installation and Running the Web Application](#installation-and-running-the-web-application)
- [Using the Application](#using-the-application)
- [API Documentation](#api-documentation)
- [Development Setup](#development-setup)
- [Running Tests](#running-tests)
- [License](#license)## Getting Started
### Prerquisites
Before you get started with this project / repository, make sure you have the following installed on your system:
* Docker
* docker-compose
* Python 3.10### Installation and Running the Web Application
1. Clone my public repository:
```
git clone https://github.com/VishalAshok1504/Task-Management-System.git
cd Task-Management-System
```
2. Under the root folder, replace the place holders with desired inputs under **'.env'** file.
3. Run:
```
flask db migrate -m""
flask db upgrade
```
4. Build and run the web application using docker
```
docker-compose up --build
```
**NOTE:** _The above command runs the application in a development environment. Setting up a development environment is discussed below under_ **Development Setup**.3. The web application is accessible at http://localhost:5000.
### Using the application
* 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.
![]()
→
![]()
Figure 1: After a successful registration, user is redirected to the Login page* To Log In an **existing user**, navigate to '**/auth/login**'.
![]()
Figure 2: Login Page* 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.
![]()
→
![]()
Figure 3: Click on Add New Task which will redirect to /tasks/add_task* 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.
![]()
Figure 4: Dashboard* User can add as many tasks as he wants to and edit any existing tasks as well.
![]()
→
![]()
Figure 5: Click on Edit which will redirect to /tasks/edit_task/task_id
![]()
Figure 6: Dashboard with edited task* 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.
![]()
Figure 7: Dashboard with flash message* 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.
![]()
Figure 8: Login Page with flash message### API documentation
The 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.**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*** & ***DELETE*** I have made use of **POST** requests.
![]()
Figure 9: Swagger UI## Development Setup
Since you are using this repo for the first time, to set up a development environment, follow these steps:1. Ensure **python** and **pip** are installed.
2. Install the required python packages using
```
pip install -r requiremnets.txt
```
3. Run
```
flask db migrate -m""
flask db upgrade
```
4. To run the flask application locally:
```
flask run
```### Running Tests
To run automated tests for this flask system, run the following command:
```
python -m unittest discover -s tests
```### License
This project is licensed under the **MIT license** -see the **'LICENSE'** file for more details.