Video Demo: (https://www.youtube.com/watch?v=QFwCyWLeogY)
TaskMate AI is a comprehensive task management web application that combines traditional productivity features with artificial intelligence to help users break down complex tasks into manageable subtasks. Built with Flask and integrated with Google's Gemini AI, this application provides an intelligent approach to personal task management.
The application was developed as my final project for Harvard's CS50x course, demonstrating the integration of web development technologies, database management, user authentication, and AI services in a practical, real-world application.
TaskMate AI serves as a personal productivity assistant that goes beyond simple to-do lists. Users can create, organize, and manage their tasks while leveraging AI capabilities to automatically break down complex projects into smaller, actionable steps. The application features a clean, intuitive interface built with Bootstrap and custom CSS, providing users with visual feedback on their productivity through comprehensive dashboard analytics.
I chose to build TaskMate AI because I wanted to explore how artificial intelligence could enhance traditional productivity tools. Many task management applications exist, but few integrate AI in a meaningful way to help users tackle overwhelming projects. This project allowed me to combine my learning from CS50x with modern AI technologies while creating something genuinely useful for personal productivity.
- User Authentication: Secure registration and login system with password hashing
- Task Management: Complete CRUD operations for tasks with priority levels and deadlines
- AI-Powered Task Breaking: Integration with Google Gemini AI to break complex tasks into subtasks
- Dashboard Analytics: Visual representation of task statistics and productivity metrics
- Responsive Design: Mobile-friendly interface using Bootstrap 5.3.3
- Smart Task Organization: Tasks categorized by status (To Do, In Progress, Completed)
- Priority Management: High, Medium, and Low priority levels with visual indicators
- Deadline Tracking: Date-based task organization with overdue notifications
- Real-time Updates: Dynamic content updates without page refreshes
- Rate-Limited AI: Intelligent handling of AI API calls with user feedback
- Flask 3.1.1: Python web framework for application structure
- CS50 SQL: Database abstraction layer for SQLite operations
- SQLite: Lightweight database for data persistence
- Werkzeug: Security utilities for password hashing
- Google Generative AI: Gemini model integration for task breakdown
- HTML5/CSS3: Semantic markup and modern styling
- Bootstrap 5.3.3: Responsive framework for UI components
- Font Awesome: Icon library for enhanced visual elements
- Jinja2: Template engine for dynamic content rendering
- Custom CSS: Enhanced styling for improved user experience
- Python Virtual Environment: Isolated dependency management
- Git: Version control for project history
- Requirements.txt: Dependency specification for easy deployment
-
GitHub Copilot was used to assist with writing most of the css classes and Bootstrap layout for this project. This includes the landing page and layout components.
-
An AI-based task breakdown feature was also implemented using the Gemini API. When a user enters a task, the application generates suggested subtasks by sending a natural language prompt to Gemini. These suggestions are reviewed and integrated into the task management flow.
-
All AI-assisted code and features were reviewed, understood, and customized to fit the needs of the project.
taskmate-ai/
βββ app.py # Main Flask application
βββ requirements.txt # Python dependencies
βββ taskmate.db # SQLite database (created on first run)
βββ utils/
β βββ database.py # Database initialization utilities
β βββ ai.py # AI integration module (placeholder)
β βββ database_clean.py # Database maintenance utilities
βββ templates/
β βββ layout.html # Base template with navigation
β βββ index.html # Landing page
β βββ dashboard.html # Main dashboard with analytics
β βββ my_task.html # Task management interface
β βββ add_task.html # Task creation form
β βββ edit_task.html # Task editing interface
β βββ login.html # User login form
β βββ register.html # User registration form
β βββ profile.html # User profile page
β
βββ static/
β βββ styles.css # Main stylesheet
β βββ css/
β β βββ style.css # Additional styling
β βββ script.js # Client-side JavaScript
βββ env/ # Virtual environment (not in git)
- Python 3.8 or higher
- pip (Python package installer)
- Git (for cloning the repository)
-
Clone the Repository
git clone <repository-url> cd taskmate-ai
-
Create Virtual Environment
python -m venv env
-
Activate Virtual Environment
- On Windows:
env\Scripts\activate
- On macOS/Linux:
source env/bin/activate
- On Windows:
-
Install Dependencies
pip install -r requirements.txt
-
Set Up Environment Variables Create a
.envfile in the project root:GEMINI_API_KEY=your_google_gemini_api_key_here FLASK_SECRET_KEY=your_secret_key_here
-
Initialize Database
python utils/database.py
-
Run the Application
flask run
-
Access the Application Open your browser and navigate to
http://127.0.0.1:5000
- Register: Create a new account on the registration page
- Login: Access your account using your credentials
- Dashboard: View your task overview and productivity statistics
- Create Tasks: Use the "My Tasks" page to add new tasks with titles, descriptions, priorities, and deadlines
- Edit Tasks: Click on any task to modify its details or change its status
- Delete Tasks: Remove completed or cancelled tasks from your list
- Organize: Filter and sort tasks by status, priority, or deadline
- Task Breaking: When creating or editing a task, use the "Break with AI" feature
- Subtask Generation: The AI will analyze your task and suggest actionable subtasks
- Rate Limiting: The system manages AI usage to prevent quota exhaustion
- Task Distribution: Visual pie chart of tasks by status
- Priority Overview: Breakdown of tasks by priority level
- Progress Tracking: Completion rates and productivity metrics
- Recent Activity: Timeline of recent task updates
I chose SQLite for its simplicity and portability, perfect for a single-user application. The schema uses two main tables:
- Users: Stores authentication data with secure password hashing
- Tasks: Contains all task information with foreign key relationships
The Google Gemini integration was chosen for its:
- Natural language processing capabilities
- Free tier availability for development
- Comprehensive API documentation
- Rate limiting that encourages thoughtful usage
Bootstrap was selected for rapid development while custom CSS provides:
- Consistent branding and visual identity
- Enhanced user experience beyond default Bootstrap components
- Responsive design patterns for mobile compatibility
- Accessibility considerations for diverse users
- Password hashing using Werkzeug's security utilities
- Session management through Flask's built-in session handling
- Input validation and sanitization on all forms
- Environment variables for sensitive configuration data
- Collaborative Tasks: Multi-user task sharing and assignment
- Calendar Integration: Sync with Google Calendar or Outlook
- Mobile App: Native mobile application for iOS and Android
- Advanced Analytics: Detailed productivity reports and trends
- Notification System: Email and push notifications for deadlines
- Database Migration: Move to PostgreSQL for production deployment
- Caching Layer: Implement Redis for improved performance
- API Development: RESTful API for third-party integrations
- Testing Suite: Comprehensive unit and integration tests
- Deployment: Docker containerization for cloud deployment
This project was developed as a CS50x final project and is primarily for educational purposes. However, suggestions and feedback are welcome through:
- Issue tracking for bug reports
- Feature requests for enhancement ideas
- Code review for learning opportunities
This project is developed for educational purposes as part of Harvard's CS50x course. Please respect academic integrity guidelines when referencing or building upon this work.
- Harvard CS50x: For providing the foundational knowledge and inspiration
- Google Gemini AI: For the artificial intelligence capabilities
- Bootstrap Team: For the responsive framework
- Flask Community: For the excellent web framework and documentation
- CS50 Staff: For the SQL library and educational resources
- GitHub: https://github.com/Utpal-Kalita
- Email: utpalkalita3002@gmail.com
This project represents the culmination of my learning journey through Harvard's CS50x course, combining web development, database management, artificial intelligence, and user experience design into a practical application that solves real-world productivity challenges.



