Intelligent Task Prioritization & Management System
- Overview
- Key Features
- Technical Architecture
- Project Structure
- Installation & Setup
- API Documentation
- Usage Guide
- Contributing
- License
Smart Task Analyzer is a sophisticated task management application designed to help users prioritize their workload effectively. Unlike traditional to-do lists, it employs a weighted algorithm to analyze tasks based on Urgency, Importance, Effort, and Dependencies.
The system calculates a dynamic Priority Score (0-10) for each task, helping users identify exactly what they should be working on right now.
- Weighted Scoring: Tasks are scored based on a custom algorithm.
- Smart Suggestions: The system recommends the top 3 tasks for the day with detailed reasoning (e.g., "High urgency and low effort - Quick Win").
- CRUD Operations: Create, Read, Update, and Delete tasks with ease.
- Drag-and-Drop Reordering: Visually organize tasks using a smooth drag-and-drop interface. The new order is persisted automatically.
- Rich Task Details: Track Due Dates, Estimated Hours, Importance Levels, and Dependencies.
- Secure Authentication: Token-based authentication system.
- User Isolation: Data is strictly segregated; users can only access their own tasks.
- Profile Management: Customizable user profiles (ready for expansion).
- Responsive Design: Fully functional on Desktop, Tablet, and Mobile.
- Dynamic Updates: Real-time DOM manipulation for a seamless user experience.
- Interactive Elements: Toast notifications, loading states, and smooth transitions.
The project follows a Monolithic Architecture with a decoupled frontend design, allowing for easy future separation if needed.
- Framework: Django 4.x
- API: Django REST Framework (DRF)
- Database: SQLite (Dev) / PostgreSQL (Prod ready)
- Auth: Token Authentication (DRF)
- Core: HTML5, CSS3, ES6+ JavaScript
- Libraries:
SortableJSfor drag-and-drop interactions.Fetch APIfor backend communication.
- Design: Custom CSS with CSS Variables for theming.
Assignment/
βββ manage.py # Django management script
βββ db.sqlite3 # Local database
βββ requirements.txt # Project dependencies
βββ task_analyzer/ # Project configuration
β βββ settings.py # Main settings
β βββ urls.py # Main URL routing
β βββ wsgi.py # WSGI entry point
βββ tasks/ # Main application app
β βββ models.py # Database models (Task, UserProfile)
β βββ views.py # API views & logic
β βββ serializers.py # Data serialization
β βββ urls.py # App-specific URLs
β βββ priority_algorithm.py # Core analysis logic
βββ templates/ # HTML Templates
β βββ index.html # Dashboard
β βββ login.html # Auth pages
β βββ register.html
βββ static/ # Static assets
βββ css/
β βββ styles.css # Main stylesheet
βββ js/
βββ app.js # Frontend logic
- Python 3.8 or higher
- pip (Python package installer)
- Git
-
Clone the Repository
git clone https://github.com/yourusername/smart-task-analyzer.git cd smart-task-analyzer -
Create Virtual Environment
# Windows python -m venv venv .\venv\Scripts\activate # macOS/Linux python3 -m venv venv source venv/bin/activate
-
Install Dependencies
pip install -r requirements.txt
-
Apply Database Migrations
python manage.py migrate
-
Create Superuser (Optional)
python manage.py createsuperuser
-
Run Development Server
python manage.py runserver
-
Access Application Open your browser and navigate to:
http://127.0.0.1:8000/
The application exposes a comprehensive REST API.
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/auth/register/ |
Register a new user |
POST |
/api/auth/login/ |
Login and retrieve token |
POST |
/api/auth/logout/ |
Invalidate current token |
GET |
/api/auth/me/ |
Get current user details |
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/tasks/my/ |
List all tasks for user |
POST |
/api/tasks/analyze/ |
Analyze a list of tasks |
POST |
/api/tasks/suggest/ |
Get task suggestions |
POST |
/api/tasks/reorder/ |
Update task order (Drag & Drop) |
GET |
/api/tasks/<id>/ |
Get task details |
PUT |
/api/tasks/<id>/ |
Update task details |
DELETE |
/api/tasks/<id>/delete/ |
Delete a task |
- Register for a new account or log in.
- You will be greeted by the main dashboard.
- Use the "Add New Task" form.
- Importance: Rate from 1 (Low) to 10 (Critical).
- Dependencies: Select other tasks that must be completed first.
- Click "Analyze Tasks" to see the calculated scores.
- Tasks with higher scores (closer to 10) should be prioritized.
- Simply drag and drop tasks in the list to change their order.
- The new order is automatically saved.
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ by Pyaraka Pushyamithra