Welcome to the To-Do List App! This project allows users to manage tasks with features for user authentication, task management, and more. It’s built with Django and includes automated testing with GitHub Actions.
User Authentication: Sign up, log in, and manage user profiles. Task Management: Create, update, and delete tasks with different statuses. Password Management: Forgot password functionality with secure reset tokens. FAQs: View and manage frequently asked questions. Admin Panel: Accessible for managing users, tasks, and FAQs.
Django: Web framework for building the application. Django REST Framework (DRF): For building RESTful APIs. GitHub Actions: CI/CD for automated testing and deployment. Bcrypt: For securely hashing passwords. SQLite: Database used for development (can be changed to PostgreSQL or others for production).
Prerequisites Python 3.7, 3.8, or 3.9 pip (Python package installer) Git
To get started, clone the repository:
git clone https://github.com/Ghosts6/to_do_list
cd to_do_list
Install the required packages:
python -m pip install --upgrade pip
pip install -r requirements.txt
Apply the initial migrations to set up the database:
python manage.py migrate
Create a superuser account to access the Django admin panel:
python manage.py createsuperuser
Start the Django development server:
python manage.py runserver
Visit http://127.0.0.1:8000 in your web browser to see the application in action.
This project includes a GitHub Actions workflow for continuous integration. The workflow runs tests on push and pull request events.
Workflow File The configuration is located in .github/workflows/django.yml. It performs the following steps:
Check Out Code: Retrieves the latest code from the repository. Set Up Python: Configures the Python environment. Install Dependencies: Installs packages from requirements.txt. Run Tests: Executes Django tests. Running Workflow The workflow is automatically triggered on:
Push: When changes are pushed to the main branch. Pull Request: When a pull request is created or updated. You can view workflow runs and their status in the Actions tab of the repository on GitHub.
Sign Up: POST /api/signup/ - Register a new user. Login: POST /api/login/ - Authenticate and log in. Forgot Password: POST /api/forgot/ - Request a password reset link. Reset Password: POST /api/reset/// - Reset the user password.
List Tasks: GET /api/tasks/ - Retrieve a list of tasks. Create Task: POST /api/tasks/ - Add a new task. Update Task: PUT /api/tasks// - Update an existing task. Delete Task: DELETE /api/tasks// - Remove a task.
List FAQs: GET /api/faqs/ - Retrieve a list of frequently asked questions. Add FAQ: POST /api/faqs/ - Create a new FAQ. Update FAQ: PUT /api/faqs// - Update an existing FAQ. Delete FAQ: DELETE /api/faqs// - Remove an FAQ.
Click the image above to watch a video demonstration of the project.
The primary focus of this project is to demonstrate the interaction between the API, JSON data, and Django models. The current implementation does not include responsive design features, which means that the user interface may not adapt well to different screen sizes or devices.
- Main Goal: The project is intended to work with API endpoints and handle JSON data effectively.
- Models: It showcases the usage of Django models for task management and user authentication.
- UI Design: Responsive design and cross-device compatibility are not addressed in this project.