A simple and elegant ToDo application built with Django that allows users to manage their daily tasks efficiently.
- ✅ Add Tasks: Create new tasks with a simple form
- ✅ Mark as Complete: Mark tasks as done with a single click
- ✅ Mark as Incomplete: Undo completed tasks if needed
- ✅ Edit Tasks: Update existing task descriptions
- ✅ Delete Tasks: Remove tasks permanently
- ✅ Task Organization: Separate views for pending and completed tasks
- ✅ Responsive Design: Bootstrap-powered UI that works on all devices
- ✅ Real-time Updates: Tasks are organized by creation and update time
ToDO/
├── manage.py # Django management script
├── db.sqlite3 # SQLite database file
├── templates/ # HTML templates
│ ├── home.html # Main application page
│ └── edit_task.html # Task editing form
├── todo/ # Main application
│ ├── models.py # Task model definition
│ ├── views.py # Application views
│ ├── urls.py # URL patterns
│ ├── admin.py # Admin configuration
│ └── migrations/ # Database migrations
├── ToDo_main/ # Django project settings
│ ├── settings.py # Project configuration
│ ├── urls.py # Main URL routing
│ └── views.py # Project-level views
└── env/ # Virtual environment
- Python 3.8 or higher
- pip (Python package installer)
git clone <repository-url>
cd ToDOpython -m venv envOn Windows:
env\Scripts\activateOn macOS/Linux:
source env/bin/activatepip install djangopython manage.py migratepython manage.py runserverThe application will be available at http://127.0.0.1:8000/
- Adding Tasks: Enter your task in the input field at the bottom of the page and click "Add"
- Completing Tasks: Click the green "Mark as Done" button next to any pending task
- Editing Tasks: Click the blue "Edit" button to modify a task description
- Deleting Tasks: Click the red "Delete" button to permanently remove a task
- Undoing Tasks: Click the yellow "Undo" button to move completed tasks back to pending
- Task Model: Contains task description, completion status, and timestamps
task: CharField (max 250 characters)is_completed: BooleanField (default: False)created_at: DateTimeField (auto-generated)updated_at: DateTimeField (auto-updated)
home: Displays all tasks (pending and completed)addtask: Creates new tasksmark_as_done: Marks tasks as completedmark_as_undone: Reverts completed tasks to pendingedit_task: Updates task descriptionsdelete_task: Removes tasks permanently
- Uses SQLite3 for development (included in Django)
- Database file:
db.sqlite3 - Migrations are included in the
todo/migrations/directory
- Backend: Django 5.2.7
- Database: SQLite3
- Frontend: HTML5, Bootstrap 5.3.0, Font Awesome Icons
- Language: Python 3.8+
python manage.py testpython manage.py createsuperuserThen visit http://127.0.0.1:8000/admin/ to access the Django admin interface.
- Modify models in
todo/models.py - Create migrations:
python manage.py makemigrations - Apply migrations:
python manage.py migrate - Update views and templates as needed
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available under the MIT License.
- User authentication and personal task lists
- Task categories and tags
- Due dates and reminders
- Task priority levels
- Search and filter functionality
- Export tasks to various formats
- Dark mode theme
- Mobile app version
If you encounter any issues or have questions, please open an issue in the repository or contact the development team.
Happy Task Managing! 🎯