Welcome to the documentation for Dispatch Hub! This guide provides developers with the necessary information to interact with our API and integrate it into their applications.
TaskFlow API is a Task Management Application RESTful API. The objectives of this application is to provide users with tools and features that help them efficiently manage their tasks, improve productivity, and stay organized.
The ultimate goal of a task management application is to empower users to manage their tasks effectively, reduce stress, and enhance their overall productivity and organization.
- Language: Python 3.11.3
- Framework: Django 4.0+
- Database: Dbsqlite3
- Methodology: Test Driven Development
Allow users to create tasks easily and organize them based on different parameters such as due dates, priority, categories, and projects.
Enable users to track the progress of their tasks, update task statuses (e.g., to-do, in progress, completed), and get a clear overview of tasks that need attention.
Help users keep track of task deadlines by providing reminders, notifications, and a clear visualization of upcoming due dates.
Facilitate collaboration among teams by allowing users to assign tasks to colleagues, share task details, and communicate within the application.
Provide tools to estimate and track the time required to complete tasks, helping users allocate their time effectively and avoid overloading themselves.
Allow users to set task priorities and sort tasks based on importance, urgency, or custom criteria, aiding in making informed decisions about task order.
Offer flexibility in customizing task categories, labels, tags, and views to match users' preferred workflows and organizational methods.
Provide visual representations of task distribution, completion rates, and productivity trends, allowing users to gain insights into their task management habits.
Integrate with users' calendars and other productivity tools to synchronize task deadlines, meetings, and events.
Ensure the application is accessible from mobile devices, allowing users to manage tasks on the go.
Prioritize the security and privacy of user data, implementing proper authentication, encryption, and access controls.
Implement data backup and synchronization features to prevent data loss and ensure tasks are accessible from multiple devices.
To run the API locally, follow these steps:
- Clone the repository:
git clone https://github.com/devsylva/TaskFlow-API.git
- Create a virtual environment inside the project directory:
python -m venv venv
- Activate the virtual environment:
source venv/bin/activate
- Install dependecies:
pip install -r requirements.txt
-
Change
.env.templates
in the src/taskflow direct to.env
and setup your environment variables -
Setup the database:
python manage.py migrate
- Create a superuser account:
python manage.py createsuperuser
- Start the development server:
python manage.py runserver
Tests are organized into different files within the app's tests directory. Here's how to run them
- To run all the tests, use the following command:
python manage.py test
- To run a single test file, use the following command [replacing
<app_name>
and<test_file>
with the appropriate values]:
python manage.py test <app_name>.tests.<test_file>
Authentication is required for most endpoints in the API. To authenticate, include an access token in the Authorization
header of your request. The access token can be obtained by logging in to your account or registering a new account.
The following endpoints are available in the API:
api/user/signup/
(POST): to allow users register an account.api/user/login/
(POST): to allow users to log in into their account.api/user/login/refresh/
(POST): to allow user refresh to get their access token after it expires.api/user/confirm-email/<uidb64>/<token>/
(GET): to allow users confirm their email address.api/user/logout/
(POST): to allow users to log out of their account.api/user/change_password/
(POST): to allow users change there account password.
The following endpoints are available in the API:
api/task/task_view/
(POST): allow users create tasks.api/task/task_view/
(GET): getting all task owned by the logged in user in order or priority and deadline if provided.api/task/task_detail/
(GET): getting a single task.api/task/task_detail/
(PUT): updating a task.api/task/task_detail/
(DELETE): deleting a task.api/task/tag_view/
(POST): allow users create tag.api/task/tag_view/
(GET): getting all tags owned by the logged in user.api/task/tag_detail/
(GET): getting a single tag.api/task/tag_detail/
(PUT): updating a tag.api/task/tag_detail/
(DELETE): deleting a tag.api/task/category_view/
(POST): allow users create category.api/task/category_view/
(GET): getting all category owned by the logged in user.api/task/category_detail/
(GET): getting a single category.api/task/category_detail/
(PUT): updating a category.api/task/category_detail/
(DELETE): deleting a category.
TaskFlow utilizes Celery for background task processing. However, running Celery tasks with a Redis broker requires specific configuration, including a dedicated environment with Redis server installed. Users who wish to leverage Celery tasks need to set up this environment, which might not be feasible in all development or testing setups.
TaskFlow's development and testing have primarily been focused on Unix-like operating systems such as Linux and macOS. While efforts have been made to support Windows environments, there might be differences in behavior due to environment-specific factors that Windows does not provide. Users using Windows are advised to thoroughly test the app's functionality to ensure optimal performance.
TaskFlow relies on various external dependencies, such as third-party libraries and services (e.g., Amazon S3 for backups). The availability and reliability of these external dependencies might affect certain features of the app. Users should be cautious of potential service disruptions or compatibility issues with these dependencies.
While TaskFlow is designed to be scalable, the performance of the app might vary based on factors such as the size of the user base, task complexity, and the underlying hardware and infrastructure. Large-scale deployments should be carefully planned and optimized to ensure efficient task management and responsiveness.
TaskFlow implements security measures to protect user data. However, it's essential for users to handle sensitive information with care. The app might not account for all possible security scenarios, and users should take additional measures if dealing with highly sensitive data.
TaskFlow heavily relies on internet connectivity for real-time synchronization and collaboration features. Offline functionality is limited, and users should ensure a stable internet connection to fully utilize the app's capabilities.
TaskFlow offers robust task management capabilities, but it's important to understand its limitations to make informed decisions about its usage. Users should consider the app's compatibility with their specific environment and requirements before adopting it for their task management needs.
Contributions to this project are welcome! Go through our GUIDELINES
This project is licensed under the MIT License - see the LICENSE file for details.