A lightweight task analysis system built with Django REST Framework and HTML/CSS/JavaScript.
It evaluates tasks based on importance, effort, deadline urgency, and dependencies, then returns:
- Priority scores
- Sorted task lists
- Top task suggestions
- Explanations
- Circular dependency detection
- REST API for analyzing and suggesting tasks
- Weighted scoring system
- Circular dependency detection (DFS-based)
- Input validation & error handling
- Clean HTML/CSS/JS frontend
- Custom sorting strategies
- Unit-tested backend
- Backend: Django, Django REST Framework
- Frontend: HTML, CSS, Vanilla JavaScript
- Tools: CORS Headers, Python venv
Task-Analyzer/ │ ├── backend/ # Django Backend │ ├── backend/ │ │ ├── settings.py │ │ ├── urls.py │ │ └── ... │ ├── tasks/ │ │ ├── views.py │ │ ├── serializers.py │ │ ├── scoring.py │ │ ├── tests.py │ │ └── ... │ ├── manage.py │ └── requirements.txt │ └── frontend/ # Simple Frontend ├── index.html ├── styles.css └── script.js
python -m venv venv
# 2. Activate It
//Windows:
venv\Scripts\activate
//Mac/Linux:
source venv/bin/activate
# 3. Install Dependencies
pip install -r requirements.txt
//If you built manually:
pip install django djangorestframework django-cors-headers
pip freeze > requirements.txt
# 4. Run Backend
cd backend
python manage.py runserver
# Backend URL:
http://127.0.0.1:8000/
# API Endpoints/
1️⃣ POST /api/tasks/analyze/
Returns all tasks sorted by priority score.
# ✔ Sample Request
[
{
"id": "1",
"title": "Fix login bug",
"due_date": "2025-11-30",
"estimated_hours": 3,
"importance": 9,
"dependencies": []
},
{
"id": "2",
"title": "Write documentation",
"due_date": "2025-12-05",
"estimated_hours": 2,
"importance": 6,
"dependencies": ["1"]
}
]
# ✔ Sample Response
[
{
"id": "1",
"title": "Fix login bug",
"score": 7.3,
"due_date": "2025-11-30",
"importance": 9,
"estimated_hours": 3,
"dependencies": []
},
{
"id": "2",
"title": "Write documentation",
"score": 5.1,
"due_date": "2025-12-05",
"importance": 6,
"estimated_hours": 2,
"dependencies": ["1"]
}
]
# 2️⃣ POST /api/tasks/suggest/
Returns top 3 most important tasks with explanations.
✔ Sample Response
[
{
"id": "1",
"title": "Fix login bug",
"score": 7.3,
"due_date": "2025-11-30",
"importance": 9,
"estimated_hours": 3,
"reason": "High importance, Low effort (quick to finish)"
}
]
# Scoring Logic (tasks/scoring.py)
Tasks are scored using these factors:
✔ 1. Importance
Higher score → more important.
✔ 2. Effort (estimated hours)
Lower hours → higher score.
✔ 3. Deadline urgency
Earlier deadlines → added priority.
✔ 4. Dependency value
If a task unblocks many others → higher score.
The system creates a combined weighted score using all these attributes.
# Dependency Graph & Cycle Detection
// Dependencies form a directed graph:
A → B means “A depends on B”.
The system uses DFS + color marking to detect cycles.
✔ Sample Error Response:
{
"error": "Circular dependency detected",
"cycles": [
["1", "2", "3", "1"]
]
}
# Validation & Error Handling
//The backend ensures://
-> importance between 1 and 10
-> estimated_hours ≥ 0
-> due_date valid YYYY-MM-DD
-> No duplicate IDs
->Unknown dependency IDs are rejected
Cycles are detected
Empty lists are rejected
//Example error message://
{
"estimated_hours": ["Estimated hours cannot be negative."]
}
# Tests (Backend)
Run tests:
python manage.py test
//Tests cover://
->scoring logic
->analyze endpoint
->suggest endpoint
->cycle detection
# Frontend (Lightweight HTML/CSS/JS)
Located in /frontend.
# Features:
✔ Add tasks one-by-one
✔ Paste raw JSON
✔ Analyze tasks
✔ Suggest top tasks
✔ Color-coded priority
✔ Sorting strategies:
-Smart balance
-Fastest wins
-High impact
-Deadline-driven
// Starting the Frontend //
Using VS Code Live Server:
-> Right-click index.html
-> Click "Open with Live Server"
-> Opens at:
http://127.0.0.1:5500/frontend/index.html
# Frontend Output Preview
Each task shows:
-> Title
-> Score
-> Importance
-> Estimated hours
-> Due date
-> Reason
Priority badge with color
-> 🔴 High (red)
-> 🟠 Medium (yellow)
-> 🟢 Low (green)
# How to Run Everything Together
-->Start Backend:
cd backend
python manage.py runserver
-->Start Frontend (Live Server):
frontend/index.html
-->Then:
-> Add tasks
-> Or paste JSON
-> Click Analyze or Suggest
# Future Extensions
-> User authentication
-> Save tasks in database
-> Editable tasks in frontend
-> Task search/filter
-> Dependency graph visualization