A full-stack task management application built with Django REST Framework and React, featuring an AI-powered conversational assistant for natural language task management.
- JWT-secured REST API for creating, updating, and deleting tasks
- AI-powered assistant (Aurora) with natural language understanding via OpenAI integration
- Natural language task creation - "Create a task to pay rent tomorrow at 5pm"
- Multi-step task creation flow with intelligent follow-up questions
- Persistent chat history with clear/reset functionality
- Floating, draggable assistant UI with responsive design
- Smart task management - bulk operations, filtering, prioritization
- User authentication - secure login, registration, and password reset
- Due date/time tracking with overdue detection and notifications
- Modern React dashboard with stats, filters, and timeline details
- Python 3.8+
- Node.js 16+ and npm
- (Optional) OpenAI API key for AI assistant features
-
Navigate to backend directory:
cd backend -
Create and activate virtual environment:
python -m venv .venv # On Windows: .venv\Scripts\activate # On macOS/Linux: source .venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Configure environment:
cp .env.example .env
Edit
.envand configure:- Database settings (SQLite by default, no setup needed)
- CORS origins (default:
http://localhost:5173) - (Optional) OpenAI API key for AI features
-
Run migrations:
python manage.py migrate
-
Create superuser (for admin access):
python manage.py createsuperuser
-
Start the development server:
python manage.py runserver 8000
The API will be available at
http://localhost:8000
-
Navigate to frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The app will be available at
http://localhost:5173
- Open
http://localhost:5173in your browser - Click "Login" and create a new account
- Start creating tasks or chat with Aurora, the AI assistant!
The AI assistant (Aurora) provides natural language task management. It works without an API key using pattern matching, but for the best experience, set up OpenAI integration:
-
Get an OpenAI API key:
- Visit OpenAI Platform
- Create an account and generate an API key
-
Add to backend
.envfile:OPENAI_API_KEY=your-api-key-here OPENAI_MODEL=gpt-4o-mini # Optional: defaults to gpt-4o-mini -
Restart the Django server
With OpenAI integration, Aurora can:
- Understand natural language commands ("Create a task to call mom tomorrow at 3pm")
- Ask intelligent follow-up questions for task details
- Provide context-aware responses about your tasks
- Help with planning and prioritization
- Engage in friendly conversation
Without the API key, Aurora still works using pattern matching for basic commands.
Task_Manager/
βββ backend/ # Django REST API
β βββ tasks/ # Task models and views
β βββ accounts/ # User authentication
β βββ manage.py
β βββ requirements.txt
βββ frontend/ # React application
β βββ src/
β β βββ components/ # React components
β β βββ contexts/ # React context providers
β β βββ pages/ # Page components
β β βββ utils/ # Utility functions
β β βββ services/ # API services
β βββ package.json
βββ README.md
SQLite (Default - No setup required)
- Works out of the box
- Perfect for development and small deployments
MySQL/MariaDB (Optional)
-
Install MySQL client libraries:
# Debian/Ubuntu sudo apt-get install libmysqlclient-dev # macOS brew install mysql-client
-
Update
.env:DB_ENGINE=mysql DB_NAME=taskmanager DB_USER=your_user DB_PASSWORD=your_password DB_HOST=127.0.0.1 DB_PORT=3306
-
Run migrations:
python manage.py migrate
For local MariaDB testing:
docker compose -f docker-compose.mariadb.yml up -d
# Run migrations
DB_ENGINE=mysql DB_NAME=taskmanager DB_USER=taskuser DB_PASSWORD=taskpass DB_HOST=127.0.0.1 DB_PORT=3306 \
python manage.py migrateVia Form:
- Click "New Task" in the navigation
- Fill in title, description, and optional due date/time
- Click "Save task"
Via AI Assistant:
- Click the cloud icon (βοΈ) in the bottom-right
- Say: "Create a task to buy groceries tomorrow at 2pm"
- Aurora will guide you through the process
- View all tasks: Click "Tasks" in navigation
- Filter tasks: Use the filter buttons (All, Active, Completed)
- Edit task: Click "Edit" on any task card
- Complete task: Click "Mark done" or use the checkbox
- Delete task: Click "Delete" on any task card
Try these with Aurora:
- "Create a task called..."
- "What tasks are due today?"
- "Delete all tasks" (with confirmation)
- "Clear chat" (start fresh conversation)
- "What can you do?" (see all capabilities)
- "Plan my day"
- "I'm stressed" (get help prioritizing)
Frontend:
cd frontend
npm run buildBackend:
cd backend
python manage.py collectstatic # If using static files# Backend tests
cd backend
python manage.py test
# Frontend tests (if configured)
cd frontend
npm testPOST /api/register/- User registrationPOST /api/token/- Get JWT token (login)POST /api/token/refresh/- Refresh JWT tokenGET /api/tasks/- List all tasks (authenticated)POST /api/tasks/- Create new taskGET /api/tasks/{id}/- Get task detailsPUT /api/tasks/{id}/- Update taskDELETE /api/tasks/{id}/- Delete taskPOST /api/tasks/delete-all/- Delete all tasks (bulk)
- JWT-based authentication
- Password hashing with Django's PBKDF2
- CORS protection
- SQL injection protection (Django ORM)
- XSS protection (React)
Backend:
- Django 4.2+
- Django REST Framework
- djangorestframework-simplejwt
- django-cors-headers
- openai (optional, for AI features)
Frontend:
- React 18+
- React Router
- Vite
- Axios
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is open source and available for personal and educational use.
- Built with Django and React
- AI features powered by OpenAI
- UI inspired by modern productivity tools
For issues, questions, or contributions, please open an issue on GitHub.
Repository: https://github.com/GielinorR-S/Task_Manager
Happy task managing! π