A full-stack task management application that automatically categorizes tasks using the Eisenhower Matrix (Urgent-Important Matrix) methodology.
Deployment Link - https://schedule-manager-for-students.onrender.com/
Built with: Django REST Framework โข React โข Vite โข Supabase โข PostgreSQL
- Features
- Architecture
- Quick Start
- API Endpoints
- Scoring Algorithm
- UI Components
- Tech Stack
- Database Schema
- Security
- Future Enhancements
- Contributing
- License
- Smart Categorization: Automatically calculates urgency and importance scores
- 4-Quadrant Dashboard: Visual organization using the Eisenhower Matrix
- ๐ด Urgent & Important (Do First)
- ๐ก Important but Not Urgent (Schedule)
- ๐ต Urgent but Not Important (Delegate)
- โช Neither (Eliminate)
- Real-time Scoring: Dynamic task prioritization based on deadlines and estimated time
- RESTful API: Clean Django REST Framework backend
- Responsive UI: Modern React frontend with color-coded quadrants
- Supabase Integration: PostgreSQL database with authentication ready
eisenhower-matrix/
โโโ backend/ # Django REST API
โ โโโ tasks/ # Main app
โ โ โโโ models.py # Task model
โ โ โโโ views.py # API endpoints
โ โ โโโ serializers.py # JSON serialization
โ โ โโโ categorization.py # Scoring algorithms
โ โโโ eisenhower_matrix/ # Project settings
โโโ frontend/ # React app
โ โโโ src/
โ โโโ components/ # React components
โ โ โโโ Dashboard.jsx # 4-quadrant layout
โ โ โโโ TaskCard.jsx # Task display
โ โ โโโ TaskForm.jsx # Task creation
โ โโโ api/
โ โโโ client.js # API client
โโโ .kiro/specs/ # Project specifications
- Python 3.9+
- Node.js 16+
- Supabase account (free tier works)
-
Navigate to backend directory
cd backend -
Create virtual environment
python -m venv venv venv\Scripts\activate # Windows source venv/bin/activate # Mac/Linux
-
Install dependencies
pip install -r requirements.txt
-
Configure environment variables
Copy
.env.exampleto.envand fill in your Supabase credentials:DATABASE_NAME=postgres DATABASE_USER=postgres.your-project-ref DATABASE_PASSWORD=your-password DATABASE_HOST=your-project-ref.supabase.co DATABASE_PORT=5432 SUPABASE_URL=https://your-project-ref.supabase.co SUPABASE_ANON_KEY=your-anon-key
-
Run migrations
python manage.py migrate
-
Create superuser (optional)
python manage.py createsuperuser
-
Start backend server
python manage.py runserver
Backend runs at:
http://localhost:8000
-
Navigate to frontend directory
cd frontend -
Install dependencies
npm install
-
Start development server
npm run dev
Frontend runs at:
http://localhost:5174
GET /api/tasks/- List all tasksPOST /api/tasks/- Create new taskGET /api/tasks/{id}/- Get task detailsPUT /api/tasks/{id}/- Update taskDELETE /api/tasks/{id}/- Delete task
POST /api/tasks/
{
"title": "Complete project report",
"description": "Finish the quarterly report",
"deadline": "2024-03-15T18:00:00Z",
"estimated_time_hours": 4.5
}{
"id": 1,
"title": "Complete project report",
"description": "Finish the quarterly report",
"deadline": "2024-03-15T18:00:00Z",
"estimated_time_hours": "4.50",
"urgency_score": "0.85",
"importance_score": "0.72",
"quadrant": "urgent_important",
"is_manually_categorized": false,
"is_completed": false,
"created_at": "2024-03-10T10:30:00Z",
"updated_at": "2024-03-10T10:30:00Z"
}Based on time until deadline:
- < 24 hours: 0.9 - 1.0 (Critical)
- 1-3 days: 0.7 - 0.9 (High)
- 3-7 days: 0.4 - 0.7 (Medium)
- > 7 days: 0.0 - 0.4 (Low)
Based on estimated time required:
- > 8 hours: 0.8 - 1.0 (Major task)
- 4-8 hours: 0.6 - 0.8 (Significant)
- 2-4 hours: 0.4 - 0.6 (Moderate)
- < 2 hours: 0.0 - 0.4 (Minor)
- Urgent & Important: urgency โฅ 0.7 AND importance โฅ 0.7
- Important but Not Urgent: urgency < 0.7 AND importance โฅ 0.7
- Urgent but Not Important: urgency โฅ 0.7 AND importance < 0.7
- Neither: urgency < 0.7 AND importance < 0.7
4-quadrant grid layout with color-coded sections:
- Red: Urgent & Important
- Yellow: Important but Not Urgent
- Blue: Urgent but Not Important
- Gray: Neither
Displays:
- Task title and description
- Deadline (formatted)
- Estimated time
- Urgency and importance scores
- Manual categorization badge (if applicable)
Input fields:
- Title (required)
- Description (optional)
- Deadline (datetime picker)
- Estimated time in hours (number input)
- Django 4.2+: Web framework
- Django REST Framework: API toolkit
- PostgreSQL: Database (via Supabase)
- python-dotenv: Environment management
- React 18: UI library
- Vite: Build tool
- Axios: HTTP client
- CSS3: Styling
- Supabase: PostgreSQL hosting
- Row Level Security: Built-in authentication support
| Column | Type | Description |
|---|---|---|
| id | SERIAL | Primary key |
| user_id | UUID | Foreign key to auth.users |
| title | VARCHAR(255) | Task name |
| description | TEXT | Task details |
| deadline | TIMESTAMPTZ | Due date/time |
| estimated_time_hours | NUMERIC(5,2) | Hours to complete |
| urgency_score | NUMERIC(3,2) | 0.0 to 1.0 |
| importance_score | NUMERIC(3,2) | 0.0 to 1.0 |
| quadrant | VARCHAR(50) | Matrix quadrant |
| is_manually_categorized | BOOLEAN | User override flag |
| is_completed | BOOLEAN | Completion status |
| created_at | TIMESTAMPTZ | Creation timestamp |
| updated_at | TIMESTAMPTZ | Last update timestamp |
- CORS enabled for development (configure for production)
- Supabase Row Level Security (RLS) ready
- Environment variables for sensitive data
- SSL required for database connections
- User authentication with Supabase Auth
- Google Calendar integration
- Email notifications
- Task completion tracking
- Analytics dashboard
- Mobile responsive improvements
- Dark mode
- Task filtering and search
- Drag-and-drop task reordering
- Export tasks to CSV/PDF
MIT License - feel free to use this project for learning or building your own task manager!
Contributions are welcome! Please feel free to submit a Pull Request.
Built for a hackathon project demonstrating full-stack development with modern web technologies.
- Eisenhower Matrix methodology by Dwight D. Eisenhower
- Django and React communities
- Supabase for excellent PostgreSQL hosting
โญ Star this repo if you find it helpful!