TODO Application is a Django-based project designed to manage tasks efficiently. The application includes features such as task creation, updating, deletion, filtering, searching, and ordering. It also provides a fully documented API using Swagger and ReDoc for seamless integration with other systems.
- Create, update, delete, and retrieve tasks.
- Filter tasks by completion status, due date, or creation date.
- Search tasks by title or description.
- Order tasks by due date or creation date.
- API documentation with Swagger and ReDoc.
- Dockerized for easy deployment.
- Continuous Integration (CI) setup using GitHub Actions.
- Code linting with
flake8
and formatting withblack
.
Before running the project, ensure you have the following installed:
- Python 3.12+
- Docker (optional, for containerized deployment)
- Git
-
Clone the repository:
git clone https://github.com/amirata051/TODO-Application.git cd TODO-Application
-
Create and activate a virtual environment:
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Apply migrations:
python manage.py migrate
-
Run the development server:
python manage.py runserver
-
Access the application at
http://localhost:8000
.
-
Build the Docker image:
docker build -t todo-app .
-
Run the Docker container:
docker run -d -p 8000:8000 todo-app
-
Access the application at
http://localhost:8000
.
The project includes automated tests to ensure functionality.
-
Run tests:
python manage.py test
-
Check test coverage (optional):
coverage run manage.py test coverage report
The project enforces code quality standards using the following tools:
- flake8: For linting Python code.
- black: For consistent code formatting.
To check for linting errors:
flake8 .
To format the code:
black .
The project uses GitHub Actions for Continuous Integration:
- Automated testing on each commit.
- Code linting with
flake8
and formatting validation withblack
.
The project includes a fully documented API available at the following endpoints:
- Swagger UI:
http://localhost:8000/swagger/
- ReDoc:
http://localhost:8000/redoc/
- Django: Web framework for the backend.
- Django REST Framework: API development.
- drf-yasg: API documentation.
- Docker: Containerization.
- GitHub Actions: Continuous Integration.
- flake8: Code linting.
- black: Code formatting.
- Adding user authentication (e.g., JWT-based).
- Implementing Continuous Deployment (CD).
- Enhancing API security and rate-limiting.
Contributions are welcome! Please fork the repository and create a pull request for any feature or bug fix.
This project is licensed under the BSD License. See the LICENSE file for more details.